Automatiser la gestion des appareils virtuels avec des règles de test projetées

projectedtestrule, gestion des appareils virtuels

Appareils XR concernés
Ces conseils vous aident à créer des expériences pour ces types d'appareils XR.
Lunettes audio et
d'affichage

Il est difficile d'automatiser les tests lorsque le code dépend du matériel physique. Par exemple, vous devrez peut-être connecter et déconnecter manuellement l'appareil physique pour vérifier les états de connexion. Avec tous les types différents, fonctionnalités, et états d'appareils des lunettes audio et d'affichage, ce défi peut devenir encore plus complexe. Pour tester cet ensemble diversifié de cas, utilisez les API Projected Test Rule pour automatiser la configuration et la gestion d'un environnement de test projeté. La bibliothèque gère la création d'appareils projetés, les états de connexion et la vérification des fonctionnalités. Vous pouvez ainsi vous concentrer sur le test de la logique de base de votre application. Utilisez ces API pour créer des suites de tests robustes sans écrire de code récurrent.

Ajouter des dépendances de bibliothèque

Pour utiliser la règle de test, ajoutez l'artefact de test au fichier build.gradle de votre application :

Groovy

dependencies {
// JXR Projected testing library
testImplementation "androidx.xr.projected:projected-testing:1.0.0-alpha07"
}

Kotlin

dependencies {
  // JXR Projected testing library
  testImplementation("androidx.xr.projected:projected-testing:1.0.0-alpha07")
}

Configurer la règle de test

Pour configurer la règle de test de base, annotez la règle dans votre classe de test. Par défaut, la règle connecte un appareil projeté et active ses fonctionnalités visuelles avant chaque test.

@get:Rule
val projectedTestRule = ProjectedTestRule()

private val context: Context
    get() = ApplicationProvider.getApplicationContext()

@Test
fun testWithConnectedDevice() {
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    assertThat(ProjectedContext.isProjectedDeviceContext(projectedContext)).isTrue()
}

Tester d'autres scénarios courants

Maintenant que vous avez configuré votre environnement de test projeté avec une règle de test de base, testez d'autres scénarios courants pour les lunettes audio et d'affichage afin de vérifier le fonctionnement de votre application.

Tester la déconnexion de l'appareil

Pour tester la réaction de votre application lorsque la connexion avec les lunettes est perdue, utilisez la propriété isDeviceConnected :

@Test
fun testDeviceDisconnection() {
    // manually disconnect the device via the rule
    projectedTestRule.isDeviceConnected = false

    assertThrows(IllegalStateException::class.java) {
        ProjectedContext.createProjectedDeviceContext(context)
    }
}

Points clés concernant le code

  • La règle réinitialise les propriétés telles que isDeviceConnected à leurs valeurs par défaut avant chaque test. Vous n'avez pas besoin de réinitialiser manuellement ces propriétés dans les méthodes @After.

Tester différentes fonctionnalités de l'appareil

Les lunettes d'affichage peuvent afficher des interfaces utilisateur créées avec Jetpack Compose Glimmer. Par défaut, le ProjectedTestRule active CAPABILITY_VISUAL_UI. Pour définir exactement ce que l'appareil projeté prend en charge, utilisez l'ensemble capabilities. Cela est utile pour vérifier que votre application recherche correctement la compatibilité matérielle avant de tenter de projeter du contenu sur les lunettes.

@Test
fun testAppBehaviorWithoutDisplayCapabilities() = projectedTestRule.launchTestProjectedDeviceActivity { activity ->
    // disable display capability
    projectedTestRule.capabilities = setOf()

    runBlocking {
        // create the controller
        val controller = ProjectedDeviceController.create(activity)

        // verify the app recognizes the lack of visual UI support
        assertThat(controller.capabilities).doesNotContain(ProjectedDeviceController.Capability.CAPABILITY_VISUAL_UI)
    }
}

Points clés concernant le code

  • La règle réinitialise les propriétés telles que capabilities à leurs valeurs par défaut avant chaque test. Vous n'avez pas besoin de réinitialiser manuellement ces propriétés dans les méthodes @After.
  • Lorsque vous devez vérifier le comportement spécifique d'une activité projetée sur des lunettes d'affichage, utilisez launchTestProjectedDeviceActivity.