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 un tabellone di gioco virtuale. Per testare la tua app in diversi scenari, utilizza le API ARCore test rule per scrivere test in un ambiente di test ARCore controllato. Le API gestiscono la configurazione e lo stato della sessione, quindi puoi concentrarti sul test della logica principale della tua app.
Aggiungere dipendenze della libreria
Per utilizzare la regola di test ARCore, aggiungi queste dipendenze al file build.gradle
della tua app:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha15") }
Alla moda
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha15" }
Se la tua app dipende da XR SceneCore, includi anche la dipendenza XR SceneCore testing:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16") }
Alla moda
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16" }
Configurare la regola di test
Nel test JUnit, utilizza un
AndroidJUnit4 test runner 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(context = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(Config.Builder(session.config).setHandTracking(HandTrackingMode.BOTH).build()) }
Nel passaggio @Before, configura l'ambiente di test, incluse le autorizzazioni
e la configurazione della sessione richieste.
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.rightHandTester.isVisible = true arCoreTestRule.rightHandTester.handJointMap = gestureThumbsUp advanceUntilIdle() val handState = Hand.right(session).state.value val isThumbsUp = detectThumbsUp(handState) assertThat(isThumbsUp).isTrue() }
Un test unitario 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 è attivata e i dati sulla postura vengono utilizzati per compilare i dati sulle articolazioni della mano. - Poi, 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 saperne di più sui test su Android, consulta le seguenti risorse: