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

Odpowiednie urządzenia XR
Te wskazówki pomogą Ci tworzyć rozwiązania na te typy urządzeń XR.
Okulary audio i
wyświetlacz

Trudno jest zautomatyzować testy, gdy kod zależy od sprzętu fizycznego. Na przykład może być konieczne ręczne podłączanie i odłączanie urządzenia fizycznego, aby sprawdzić stany połączenia. W przypadku okularów audio i wyświetlających, które mają różne typy, możliwościstany urządzenia, to wyzwanie może być jeszcze bardziej złożone. Aby przetestować ten zróżnicowany zestaw przypadków, użyj interfejsów Projected Test Rule API do automatyzacji konfigurowania i zarządzania środowiskiem testowym. Biblioteka obsługuje tworzenie projektowanych urządzeń, stany połączenia i weryfikację możliwości, dzięki czemu możesz skupić się na testowaniu podstawowej logiki aplikacji. Używaj tych interfejsów API do tworzenia niezawodnych zestawów testów bez pisania powtarzalnego kodu.

Dodawanie zależności biblioteki

Aby użyć reguły testowej, 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 projektowane urządzenie i włącza jego funkcje 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 przewidywanego środowiska testowego z podstawową regułą testową przetestuj inne typowe scenariusze dotyczące okularów audio i okularów wyświetlających, aby sprawdzić funkcjonalność aplikacji.

Odłączenie 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

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

Testowanie różnych funkcji urządzenia

Okulary wyświetlające 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 projektowane urządzenie, użyj zestawu 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

  • Przed każdym testem reguła resetuje właściwości, takie jak capabilities, do wartości domyślnych. Nie musisz ręcznie resetować tych właściwości w metodach @After.
  • Jeśli chcesz sprawdzić zachowanie w przypadku aktywności, w której mają się wyświetlać okulary, użyj launchTestProjectedDeviceActivity.