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.