Протестируйте свое приложение с помощью правил тестирования ARCore.

Применимые устройства XR
Данное руководство поможет вам создавать приложения для устройств XR такого типа.
XR-гарнитуры
Проводные XR-очки
Аудио и
Очки для демонстрации

Приложения дополненной реальности часто зависят от конкретных ситуаций в реальном мире для своей работы. Например, вашему приложению может потребоваться обнаруженная поверхность, такая как стол, чтобы разместить виртуальное игровое поле. Для тестирования вашего приложения в различных сценариях используйте 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()
}

Модульный тест обычно включает следующие этапы:

  1. Для настройки теста используйте ArCoreTestRule для внедрения тестовых данных. Этот объект содержит данные об окружении, которые ваше приложение считывает из сессии. Используйте TestScope.advanceUntilIdle , чтобы убедиться, что система готова к выполнению теста. В этом примере включена правая рука, и данные о позе используются для заполнения данных о суставах руки.
  2. Затем выполните тест. Вашему приложению не требуется специальное поведение для использования внедренных данных: Session использует данные, которые были внедрены в ArCoreTestRule .
  3. Наконец, проверьте результаты.

Дополнительные ресурсы

Для получения дополнительной информации о тестировании на Android обратитесь к следующим ресурсам: