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

projectedtestrule, zarządzanie urządzeniami wirtualnymi

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

Automatyzacja testów jest trudna, 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, możliwości i stany urządzeń okularów audio i wyświetlających obraz, to wyzwanie może stać się jeszcze bardziej złożone. Aby przetestować ten zróżnicowany zestaw przypadków, użyj interfejsów API Projected Test Rule do zautomatyzowania konfigurowania i zarządzania środowiskiem testowym. Biblioteka obsługuje tworzenie urządzeń wirtualnych, 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 wirtualne i włącza jego możliwości wizualne przed uruchomieniem każdego testu.

@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 z podstawową regułą testu przetestuj inne typowe scenariusze dla okularów audio i wyświetlających obraz, 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 wyświetlające obraz mogą wyświetlać interfejsy utworzone za pomocą Jetpack Compose Glimmer. Domyślnie ProjectedTestRule włącza CAPABILITY_VISUAL_UI. Aby określić, co dokładnie obsługuje urządzenie wirtualne, 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 sprawdzić działanie konkretnie w przypadku aktywności wyświetlanej na okularach, użyj launchTestProjectedDeviceActivity.