Cómo probar tu app con reglas de prueba de ARCore

Dispositivos de realidad extendida correspondientes
Esta guía te ayuda a crear experiencias para estos tipos de dispositivos de realidad extendida.
Visores de realidad extendida
Lentes de realidad extendida con cable
Lentes de audio y
pantalla

Las apps de realidad aumentada suelen depender de situaciones específicas del mundo real para funcionar. Por ejemplo, tu app podría requerir una superficie detectada, como una mesa, para colocar un tablero de juego virtual. Para probar tu app en diferentes situaciones, usa las APIs de la regla de prueba de ARCore para escribir pruebas en un entorno de prueba de ARCore controlado. Las APIs controlan la configuración y el estado de la sesión, por lo que puedes concentrarte en probar la lógica principal de tu app.

Agrega dependencias de bibliotecas

Para usar la regla de prueba de ARCore, agrega estas dependencias al archivo build.gradle de tu app:

Kotlin

dependencies {
    testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha15")
}

Groovy

dependencies {
    testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha15"
}

Si tu app depende de XR SceneCore, incluye también la dependencia de XR SceneCore testing:

Kotlin

dependencies {
    testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16")
}

Groovy

dependencies {
    testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16"
}

Configura la regla de prueba

En tu prueba JUnit, usa un ejecutor de pruebas AndroidJUnit4 para configurar una prueba:

@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())
}

En el paso @Before, configura tu entorno de pruebas, incluidos los permisos y la configuración de sesión necesarios.

Crea casos de prueba

Crea un caso de prueba para probar una situación determinada. En este ejemplo, probamos si un detector de gestos de monitoreo de manos funciona con nuestros datos de prueba:

@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()
}

Una prueba de unidades suele contener los siguientes pasos:

  1. Para configurar la prueba, usa ArCoreTestRule para insertar datos de prueba. Este objeto contiene los datos del entorno que tu app lee de la sesión. Usa TestScope.advanceUntilIdle para asegurarte de que el sistema esté listo para realizar la prueba. En este ejemplo, la mano derecha está habilitada y los datos de la postura se usan para completar los datos de las articulaciones de la mano.
  2. Luego, realiza la prueba. Tu app no necesita un comportamiento especial para usar los datos insertados: Session usa datos que se insertaron en ArCoreTestRule.
  3. Por último, verifica los resultados.

Recursos adicionales

Para obtener más información sobre las pruebas en Android, consulta los siguientes recursos: