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 da 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 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" }
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-alpha16") }
Groovy
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha16" }
Configurar a regra de teste
No seu teste JUnit, use um executor de testes AndroidJUnit4 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(context = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(Config.Builder(session.config).setHandTracking(HandTrackingMode.BOTH).build()) }
Na etapa @Before, configure seu ambiente de teste, incluindo as permissões e a configuração de sessão necessárias.
Criar casos de teste
Crie um caso de teste para testar um determinado cenário. Neste exemplo, testamos se um detector de gestos de captura de movimentos das mãos funciona com nossos dados de teste:
@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() }
Um teste de unidade geralmente contém as seguintes etapas:
- Para configurar o teste, use o
ArCoreTestRulepara injetar dados de teste. Esse objeto contém os dados do ambiente que seu 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 postura são usados para preencher os dados de articulação da mão. - Em seguida, faça o teste. Seu app não precisa de um comportamento especial para usar os
dados injetados: o
Sessionusa dados que foram injetados noArCoreTestRule. - Por fim, confira os resultados.
Outros recursos
Para saber mais sobre testes no Android, consulte os recursos a seguir: