Как тестировать приложение с помощью правил тестирования ARCore

Поддерживаемые XR-устройства
Это руководство поможет вам создавать контент для таких устройств.
XR-шлемы
Проводные XR-очки
Аудио- и
видеоочки

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

Тестирование модуля обычно включает следующие этапы:

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

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

Дополнительную информацию о тестировании на Android можно найти в следующих ресурсах: