Приложения дополненной реальности часто зависят от конкретных ситуаций в реальном мире для своей работы. Например, вашему приложению может потребоваться обнаруженная поверхность, такая как стол, чтобы разместить виртуальное игровое поле. Для тестирования вашего приложения в различных сценариях используйте API правил тестирования ARCore для написания тестов в контролируемой среде тестирования ARCore. API обрабатывают настройку сессии и состояние, поэтому вы можете сосредоточиться на тестировании основной логики вашего приложения.
Добавьте зависимости библиотеки.
Чтобы использовать правило тестирования ARCore, добавьте следующие зависимости в файл build.gradle вашего приложения:
Котлин
dependencies { testImplementation("androidx.xr.arcore:arcore-testing:1.0.0-alpha14") }
Классный
dependencies { testImplementation "androidx.xr.arcore:arcore-testing:1.0.0-alpha14" }
Если ваше приложение зависит от XR SceneCore , добавьте также зависимость XR SceneCore для тестирования :
Котлин
dependencies { testImplementation("androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15") }
Классный
dependencies { testImplementation "androidx.xr.scenecore:scenecore-testing:1.0.0-alpha15" }
Настройте правило проверки
В вашем 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() val sessionCreateResult = Session.create(activity = activity, coroutineContext = testDispatcher) session = (sessionCreateResult as SessionCreateSuccess).session // Configure the session. session.configure(session.config.copy(handTracking = HandTrackingMode.BOTH)) }
На шаге @Before настройте среду тестирования, включая необходимые разрешения и конфигурацию сессии.
Создайте тестовые примеры.
Создайте тестовый пример для проверки определённого сценария. В этом примере мы проверяем, работает ли детектор жестов отслеживания рук с нашими тестовыми данными:
@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() }
Модульный тест обычно включает следующие этапы:
- Для настройки теста используйте
ArCoreTestRuleдля внедрения тестовых данных. Этот объект содержит данные об окружении, которые ваше приложение считывает из сессии. ИспользуйтеTestScope.advanceUntilIdle, чтобы убедиться, что система готова к выполнению теста. В этом примере включена правая рука, и данные о позе используются для заполнения данных о суставах руки. - Затем выполните тест. Вашему приложению не требуется специальное поведение для использования внедренных данных:
Sessionиспользует данные, которые были внедрены вArCoreTestRule. - Наконец, проверьте результаты.
Дополнительные ресурсы
Для получения дополнительной информации о тестировании на Android обратитесь к следующим ресурсам: