Как автоматизировать управление виртуальными устройствами с помощью правил тестирования

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

Если код зависит от физического оборудования, автоматизировать тестирование сложно. Например, вам может понадобиться вручную подключить и отключить физическое устройство, чтобы проверить состояние подключения. Учитывая разные типы, возможности и состояния аудио- и видеоочков, эта задача может стать ещё сложнее. Чтобы проверить все эти случаи, используйте API Projected Test Rule для автоматической настройки и управления тестовой средой. Библиотека позволяет создавать виртуальные устройства, отслеживать состояние подключения и проверять возможности, чтобы вы могли сосредоточиться на тестировании основной логики приложения. Используйте эти API, чтобы создавать надежные наборы тестов без написания шаблонного кода.

Как добавить зависимости библиотеки

Чтобы использовать тестовое правило, добавьте артефакт тестирования в файл build.gradle вашего приложения:

Яркий

dependencies {
// JXR Projected testing library
testImplementation "androidx.xr.projected:projected-testing:1.0.0-alpha07"
}

Kotlin

dependencies {
  // JXR Projected testing library
  testImplementation("androidx.xr.projected:projected-testing:1.0.0-alpha07")
}

Как настроить тестовое правило

Чтобы настроить базовое правило тестирования, добавьте аннотацию к правилу в тестовом классе. По умолчанию правило подключает проецируемое устройство и включает его визуальные возможности перед каждым тестом.

@get:Rule
val projectedTestRule = ProjectedTestRule()

private val context: Context
    get() = ApplicationProvider.getApplicationContext()

@Test
fun testWithConnectedDevice() {
    val projectedContext = ProjectedContext.createProjectedDeviceContext(context)

    assertThat(ProjectedContext.isProjectedDeviceContext(projectedContext)).isTrue()
}

Как проверить другие распространенные сценарии

Теперь, когда вы настроили прогнозируемую тестовую среду с базовым правилом тестирования, проверьте другие распространенные сценарии для аудиоочков и дисплейных очков, чтобы убедиться в работоспособности приложения.

Отключение тестового устройства

Чтобы проверить, как приложение реагирует на потерю связи с очками, используйте свойство isDeviceConnected:

@Test
fun testDeviceDisconnection() {
    // manually disconnect the device via the rule
    projectedTestRule.isDeviceConnected = false

    assertThrows(IllegalStateException::class.java) {
        ProjectedContext.createProjectedDeviceContext(context)
    }
}

Ключевые моменты

  • Перед каждым тестированием правило сбрасывает свойства, например isDeviceConnected, до значений по умолчанию. Вам не нужно вручную сбрасывать эти свойства в методах @After.

Как тестировать возможности устройств

На дисплеях очков можно показывать интерфейсы, созданные с помощью Jetpack Compose Glimmer. По умолчанию ProjectedTestRule включает CAPABILITY_VISUAL_UI. Чтобы точно определить, что поддерживает устройство, используйте набор capabilities. Это полезно, чтобы убедиться, что приложение правильно проверяет поддержку оборудования, прежде чем пытаться передать контент на очки.

@Test
fun testAppBehaviorWithoutDisplayCapabilities() = projectedTestRule.launchTestProjectedDeviceActivity { activity ->
    // disable display capability
    projectedTestRule.capabilities = setOf()

    runBlocking {
        // create the controller
        val controller = ProjectedDeviceController.create(activity)

        // verify the app recognizes the lack of visual UI support
        assertThat(controller.capabilities).doesNotContain(ProjectedDeviceController.Capability.CAPABILITY_VISUAL_UI)
    }
}

Ключевые моменты

  • Перед каждым тестированием правило сбрасывает свойства, например capabilities, до значений по умолчанию. Вам не нужно вручную сбрасывать эти свойства в методах @After.
  • Если вам нужно проверить поведение, связанное с действием, которое должно отображаться в очках, используйте launchTestProjectedDeviceActivity.