Testare l'app con le regole di test di ARCore

Dispositivi XR applicabili
Queste indicazioni ti aiutano a creare esperienze per questi tipi di dispositivi XR.
Visori XR
Occhiali XR con cavo
Occhiali con audio e
display

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:

  1. Per configurare il test, utilizza ArCoreTestRule per inserire i dati di test. Questo oggetto contiene i dati dell'ambiente che la tua app legge dalla sessione. Utilizza TestScope.advanceUntilIdle per 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.
  2. Esegui il test. La tua app non ha bisogno di un comportamento speciale per utilizzare i dati inseriti: Session utilizza i dati inseriti in ArCoreTestRule.
  3. Infine, controlla i risultati.

Risorse aggiuntive

Per ulteriori informazioni sui test su Android, consulta le seguenti risorse: