projectedtestrule, gestion des appareils virtuels
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.