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ści i stany 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.