Interfejs Glance unit test API umożliwia testowanie kodu Glance bez nakładania widoków ani konieczności korzystania z automatyzacji interfejsu użytkownika. Na przykład interfejs API testu jednostkowego umożliwia weryfikowanie warunków, takich jak to, czy elementy znajdują się na liście lub czy pola zostały zaznaczone, za pomocą elementów dopasowujących, takich jak hasContentDescriptionEqualTo
lub isChecked
.
Ten interfejs API jest prostszy i wymaga mniej konfiguracji, dzięki czemu możesz przeprowadzać testy na podstawie testów, gdy będziesz rozwijać poszczególne elementy widżetu i uporządkować je, aby ułatwić ponowne użycie kodu.
Konfiguracja
Zależność wymagana do korzystania z biblioteki testów jednostkowych jest widoczna w tych przykładach:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Struktura testów
Uporządkuj funkcje kompozycyjne poza klasą GlanceAppWidget
, aby umożliwić ponowne użycie kodu i testowanie jednostkowe. Zmniejsz złożoność testowanych jednostek w jak największym stopniu.
class MyGlanceComposableTest {
@Test
fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
// Prepare inputs and state
setAppWidgetSize(100.dp, 100.dp)
// Set the composable under test
provideComposable {
MyNewsItemComposable(TEST_NEWS_ITEM)
}
// Perform assertions
onNode(hasTestTag("subTitle"))
.assertHasText(TEST_NEWS_ITEM.authorName)
}
}
Ustaw kontekst i rozmiar testu
Jeśli funkcja składana odczytuje kontekst za pomocą metody LocalContext.current()
, musisz ustawić kontekst za pomocą metody LocalContext.current()
.
W przeciwnym razie ten krok jest opcjonalny.
Aby zapewnić kontekst, możesz użyć dowolnego frameworka do testowania jednostkowego na Androida opartego na JVM, np. Roboletric.
Jeśli funkcja składanego elementu uzyskuje dostęp do funkcji LocalSize
, przed udostępnieniem składanego elementu w teście ustaw odpowiedni rozmiar testu. Domyślny rozmiar to 349 dp x 455 dp, co odpowiada widżetowi 5 x 4 wyświetlanemu w urządzeniu Pixel 4 w trybie pionowym.
- Jeśli widżet AppWidget używa parametru
sizeMode == Single
, możesz ustawić go naminWidth
iminHeight
w plikuinfo.xml
widżetu. - Jeśli widżet AppWidget używa
sizeMode == Exact
, możesz określić rozmiary do przetestowania w sposób podobny do określania rozmiaru widżetu oraz zidentyfikować rozmiary w orientacji poziomej i pionowej, w których widżet może się wyświetlać, i przetestować te rozmiary. - Jeśli Twoja aplikacja korzysta z elementu
sizeMode == Responsive
, możesz ustawić jeden z rozmiarów z listy, którą podasz podczas określania elementusizeMode
.
Domyślny czas oczekiwania na zakończenie testu to 1 sekunda, ale jeśli infrastruktura testowa narzuca inny czas oczekiwania, możesz przekazać niestandardowy czas jako argument metody runGlanceAppWidgetUnitTest
.
Więcej informacji i przykłady kodu znajdziesz w dokumentacji referencyjnej runGlanceAppWidgetUnitTest
.