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.