Le app di realtà aumentata spesso dipendono da situazioni reali specifiche per funzionare. Ad esempio, la tua app potrebbe richiedere una superficie rilevata, come un tavolo, per posizionare una scacchiera virtuale. Per testare la tua app in diversi scenari, utilizza le API delle regole di test di ARCore per scrivere test in un ambiente di test di ARCore controllato. Le API gestiscono la configurazione e lo stato della sessione, così puoi concentrarti sul test della logica principale della tua app.
Aggiungere dipendenze della libreria
Per utilizzare la regola di test di ARCore, aggiungi queste dipendenze al file build.gradle della tua app:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14") }
Alla moda
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14" }
Se la tua app dipende da XR SceneCore, includi anche la dipendenza di test di XR SceneCore:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15") }
Alla moda
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15" }
Configurare la regola di test
Nel test JUnit, utilizza un
AndroidJUnit4 esecutore di test per configurare 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)) }
Nel passaggio @Before, configura l'ambiente di test, incluse le autorizzazioni richieste e la configurazione della sessione.
Creare scenari di test
Crea uno scenario di test per testare un determinato scenario. In questo esempio, verifichiamo se un rilevatore di gesti di tracciamento delle mani funziona con i nostri dati di 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 unità spesso contiene i seguenti passaggi:
- Per configurare il test, utilizza
ArCoreTestRuleper inserire i dati di test. Questo oggetto contiene i dati dell'ambiente che la tua app legge dalla sessione. UtilizzaTestScope.advanceUntilIdleper assicurarti che il sistema sia pronto per eseguire il test. In questo esempio, la mano destra è abilitata e i dati di posa vengono utilizzati per popolare i dati delle giunture della mano. - Esegui il test. La tua app non ha bisogno di un comportamento speciale per utilizzare i dati inseriti:
Sessionutilizza i dati inseriti inArCoreTestRule. - Infine, controlla i risultati.
Risorse aggiuntive
Per ulteriori informazioni sui test su Android, consulta le seguenti risorse: