Если код зависит от физического оборудования, автоматизировать тестирование сложно. Например, вам может понадобиться вручную подключить и отключить физическое устройство, чтобы проверить состояние подключения. Учитывая разные типы, возможности и состояния аудио- и видеоочков, эта задача может стать ещё сложнее. Чтобы проверить все эти случаи, используйте 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.