Os apps de realidade aumentada geralmente dependem de situações específicas do mundo real para funcionar. Por exemplo, seu app pode exigir uma superfície detectada, como uma mesa, para colocar um tabuleiro de jogo virtual. Para testar seu app em diferentes cenários, use as APIs de regra de teste do ARCore para escrever testes em um ambiente de teste controlado do ARCore. As APIs processam a configuração e o estado da sessão para que você possa se concentrar em testar a lógica principal do app.
Adicionar dependências de biblioteca
Para usar a regra de teste do ARCore, adicione estas dependências ao arquivo build.gradle do seu 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" }
Se o app depender do XR SceneCore, inclua também a dependência de teste do 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" }
Configurar a regra de teste
No teste JUnit, use um
AndroidJUnit4 executor de teste para configurar um teste:
@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)) }
Na etapa @Before, configure o ambiente de teste, incluindo as permissões necessárias e a configuração da sessão.
Criar casos de teste
Crie um caso de teste para testar um determinado cenário. Neste exemplo, testamos se um detector de captura de movimentos das mãos funciona com nossos dados de teste:
@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() }
Um teste de unidade geralmente contém as seguintes etapas:
- Para configurar o teste, use a
ArCoreTestRulepara injetar dados de teste. Esse objeto contém os dados do ambiente que o app lê da sessão. UseTestScope.advanceUntilIdlepara garantir que o sistema esteja pronto para realizar o teste. Neste exemplo, a mão direita está ativada, e os dados de pose são usados para preencher os dados da articulação da mão. - Em seguida, realize o teste. Seu app não precisa de um comportamento especial para usar os dados injetados: a
Sessionusa dados que foram injetados naArCoreTestRule. - Por fim, verifique os resultados.
Outros recursos
Para mais informações sobre testes no Android, consulte os seguintes recursos: