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:
- 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, la mano derecha está habilitada y los datos de la postura se usan para completar los datos de las articulaciones de la mano. - Luego, realiza la prueba. Tu app no necesita un comportamiento especial para usar los datos insertados:
Sessionusa 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: