Les applications de réalité augmentée dépendent souvent de situations spécifiques du monde réel pour fonctionner. Par exemple, votre application peut nécessiter une surface détectée, comme une table, pour placer un plateau de jeu virtuel. Pour tester votre application dans différents scénarios, utilisez les API ARCore test rule afin d'écrire des tests dans un environnement de test ARCore contrôlé. Les API gèrent la configuration et l'état de la session, ce qui vous permet de vous concentrer sur le test de la logique principale de votre application.
Ajouter des dépendances de bibliothèque
Pour utiliser la règle de test ARCore, ajoutez ces dépendances au fichier build.gradle de votre application :
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14") }
Groovy
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14" }
Si votre application dépend de XR SceneCore, incluez également la dépendance XR SceneCore testing :
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15") }
Groovy
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15" }
Configurer la règle de test
Dans votre test JUnit, utilisez un lanceur de test AndroidJUnit4 pour configurer un test :
@Rule @JvmField val arCoreTestRule = ArCoreTestRule() private lateinit var activityController: ActivityController<ComponentActivity> private lateinit var activity: ComponentActivity private lateinit var testDispatcher: TestDispatcher private lateinit var testScope: TestScope private lateinit var session: Session @Before fun setUp() { testDispatcher = StandardTestDispatcher() testScope = TestScope(testDispatcher) activityController = Robolectric.buildActivity(ComponentActivity::class.java) activity = activityController.get() // Set up the activity permissions. shadowOf(activity.application).grantPermissions(HAND_TRACKING) activityController.create().start().resume() val sessionCreateResult = Session.create(activity = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(session.config.copy(handTracking = HandTrackingMode.BOTH)) }
À l'étape @Before, configurez votre environnement de test, y compris les autorisations requises et la configuration de la session.
Créer des scénarios de test
Créez un scénario de test pour tester un scénario spécifique. Dans cet exemple, nous testons si un détecteur de gestes de suivi des mains fonctionne avec nos données de test :
@Test fun test_thumbsUp() = runTest(testDispatcher) { arCoreTestRule.rightHand.isVisible = true arCoreTestRule.rightHand.handJointMap = gestureThumbsUp advanceUntilIdle() val handState = Hand.right(session)?.state?.value ?: fail("Did not detect a right hand") val isThumbsUp = detectThumbsUp(handState) assertThat(isThumbsUp).isTrue() }
Un test unitaire comprend souvent les étapes suivantes :
- Pour configurer le test, utilisez
ArCoreTestRulepour injecter des données de test. Cet objet contient les données d'environnement que votre application lit à partir de la session. UtilisezTestScope.advanceUntilIdlepour vous assurer que le système est prêt à effectuer le test. Dans cet exemple, la main droite est activée et les données de pose sont utilisées pour remplir les données d'articulation de la main. - Exécutez ensuite le test. Votre application n'a pas besoin d'un comportement spécial pour utiliser les données injectées :
Sessionutilise les données qui ont été injectées dansArCoreTestRule. - Enfin, vérifiez les résultats.
Ressources supplémentaires
Pour en savoir plus sur les tests sur Android, consultez les ressources suivantes :