Приложения дополненной реальности часто зависят от определенных ситуаций в реальном мире. Например, чтобы разместить виртуальную игровую доску, приложению может потребоваться обнаружить поверхность, такую как стол. Чтобы протестировать приложение в разных сценариях, используйте API правил тестирования ARCore для написания тестов в контролируемой тестовой среде ARCore. API управляют настройками сеанса и его состоянием, поэтому вы можете сосредоточиться на тестировании основной логики приложения.
Как добавить зависимости библиотеки
Чтобы использовать правило тестирования ARCore, добавьте в файл build.gradle своего приложения следующие зависимости:
Kotlin
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-rc02") }
Яркий
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-rc02" }
Если ваше приложение зависит от XR SceneCore, добавьте также зависимость XR SceneCore testing:
Kotlin
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-rc02") }
Яркий
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-rc02" }
Как настроить тестовое правило
В тесте JUnit используйте запускатель тестов AndroidJUnit4, чтобы настроить тест:
@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() runBlocking { 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()) }
На @Before этапе настройте тестовую среду, в том числе необходимые разрешения и конфигурацию сеанса.
Создание тестовых случаев
Создайте тестовый случай, чтобы проверить определенный сценарий. В этом примере мы проверяем, работает ли детектор жестов отслеживания рук с нашими тестовыми данными:
@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() }
Тестирование модуля обычно включает следующие этапы:
- Чтобы настроить тест, используйте
ArCoreTestRuleдля добавления тестовых данных. Этот объект содержит данные об окружении, которые приложение считывает из сеанса. ИспользуйтеTestScope.advanceUntilIdle, чтобы убедиться, что система готова к тестированию. В этом примере включена правая рука, а данные о позе используются для заполнения данных о суставах руки. - Затем выполните тест. Приложению не нужно вести себя особым образом, чтобы использовать внедренные данные:
Sessionиспользует данные, внедренные вArCoreTestRule. - Наконец, проверьте результаты.
Дополнительные ресурсы
Дополнительную информацию о тестировании на Android можно найти в следующих ресурсах: