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
Audio e
occhiali con 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 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:

  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 è attivata e i dati sulla postura vengono utilizzati per compilare i dati sulle articolazioni della mano.
  2. Poi, 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 saperne di più sui test su Android, consulta le seguenti risorse: