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

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

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, fonctionnalités et états d'appareil différents des lunettes audio et des lunettes connectées, ce défi peut devenir encore plus complexe. Pour tester cet ensemble varié de cas, utilisez les API Projected Test Rule afin d'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 principale de votre application. Utilisez ces API pour créer des suites de tests robustes sans écrire de code passe-partout.

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 capacité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 les lunettes avec écran afin de vérifier la fonctionnalité de votre application.

Déconnexion de l'appareil de test

Pour tester la réaction de votre application en cas de perte de connexion avec les lunettes, 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 peuvent afficher des UI créées avec Jetpack Compose Glimmer. Par défaut, ProjectedTestRule active CAPABILITY_VISUAL_UI. Pour définir précisément ce que l'appareil projeté prend en charge, utilisez l'ensemble capabilities. Cela permet de 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 d'une activité qui est projetée pour afficher des lunettes, utilisez launchTestProjectedDeviceActivity.