Las apps de realidad aumentada suelen depender de situaciones específicas del mundo real para funcionar. Por ejemplo, es posible que tu app requiera una superficie detectada, como una mesa, para colocar un tablero de juego virtual. Para probar tu app en diferentes situaciones, usa las APIs de reglas 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 enfocarte en probar la lógica central 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-alpha14") }
Groovy
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14" }
Si tu app depende de XR SceneCore, también incluye la dependencia de prueba de XR SceneCore:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15") }
Groovy
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15" }
Configura la regla de prueba
En tu prueba de JUnit, usa un
AndroidJUnit4 ejecutor de pruebas 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(activity = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(session.config.copy(handTracking = HandTrackingMode.BOTH)) }
En el paso @Before, configura tu entorno de prueba, incluidos los permisos requeridos y la configuración de la sesión.
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.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() }
Una prueba de unidades suele contener los siguientes pasos:
- Para configurar la prueba, usa
ArCoreTestRulepara insertar datos de prueba. Este objeto contiene los datos del entorno que tu app lee de la sesión. UsaTestScope.advanceUntilIdlepara asegurarte de que el sistema esté listo para realizar la prueba. En este ejemplo, se habilita la mano derecha y se usan los datos de la postura para propagar los datos de la articulación de la mano. - Luego, realiza la prueba. Tu app no necesita un comportamiento especial para usar los datos insertados:
Sessionusa los datos que se insertaron enArCoreTestRule. - Por último, verifica los resultados.
Recursos adicionales
Para obtener más información sobre las pruebas en Android, consulta los siguientes recursos: