projectedtestrule, zarządzanie urządzeniami wirtualnymi
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.