Автоматизируйте управление виртуальными устройствами с помощью прогнозируемых правил тестирования.

projectedtestrule, управление виртуальными устройствами

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

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

Добавьте зависимости библиотеки.

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

Классный

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

Котлин

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 .