Automatyzacja zarządzania urządzeniami wirtualnymi za pomocą reguł testów prognozowanych

Obsługiwane urządzenia XR
Te wskazówki pomogą Ci tworzyć aplikacje na te typy urządzeń XR.
Okulary audio i
wyświetlające obraz

Trudno jest zautomatyzować testy, gdy kod zależy od fizycznego sprzętu. Na przykład może być konieczne ręczne podłączanie i odłączanie urządzenia fizycznego, aby sprawdzić stany połączenia. Ze względu na wszystkie różne typy, zdolności i stany urządzeń okulary audio i okulary z wyświetlaczem mogą stanowić jeszcze większe wyzwanie. Aby przetestować ten różnorodny zestaw przypadków, użyj interfejsów API reguły testu projekcji, aby zautomatyzować konfigurowanie i zarządzanie środowiskiem testowym projekcji. Biblioteka obsługuje tworzenie urządzeń projekcyjnych, stany połączenia i weryfikację możliwości, dzięki czemu możesz skupić się na testowaniu podstawowej logiki aplikacji. Użyj tych interfejsów API, aby tworzyć niezawodne zestawy testów bez pisania powtarzalnego kodu.

Dodawanie zależności biblioteki

Aby użyć reguły testu, dodaj artefakt testowy do pliku build.gradle aplikacji:

Dynamiczny

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")
}

Konfigurowanie reguły testu

Aby skonfigurować podstawową regułę testu, dodaj adnotację do reguły w klasie testu. Domyślnie reguła łączy urządzenie projekcyjne i włącza jego możliwości wizualne przed każdym testem.

@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()
}

Testowanie innych typowych scenariuszy

Po skonfigurowaniu środowiska testowego projekcji za pomocą podstawowej reguły testu przetestuj inne typowe scenariusze dla okularów audio i okularów z wyświetlaczem, aby sprawdzić funkcjonalność aplikacji.

Testowanie odłączenia urządzenia testowego

Aby sprawdzić, jak aplikacja reaguje na utratę połączenia z okularami, użyj właściwości isDeviceConnected:

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

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

Najważniejsze informacje o kodzie

  • Reguła resetuje właściwości, takie jak isDeviceConnected, do wartości domyślnych przed każdym testem. Nie musisz ręcznie resetować tych właściwości w metodach @After.

Testowanie różnych możliwości urządzenia

Okulary z wyświetlaczem mogą wyświetlać interfejsy utworzone za pomocą Jetpack Compose Glimmer. Domyślnie ProjectedTestRule włącza CAPABILITY_VISUAL_UI. Aby dokładnie określić, co obsługuje urządzenie projekcyjne, użyj zbioru capabilities. Jest to przydatne do sprawdzania, czy aplikacja prawidłowo sprawdza obsługę sprzętu przed próbą wyświetlenia treści na okularach.

@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)
    }
}

Najważniejsze informacje o kodzie

  • Reguła resetuje właściwości, takie jak capabilities, do wartości domyślnych przed każdym testem. Nie musisz ręcznie resetować tych właściwości w metodach @After.
  • Gdy musisz zweryfikować działanie konkretnie w przypadku aktywności wyświetlanej na okularach z wyświetlaczem, użyj launchTestProjectedDeviceActivity.