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 lekki i wymaga mniej konfiguracji, więc możesz prowadzić rozwój oparty na testach, gdy tworzysz poszczególne elementy widżetu i je organizujesz, aby zwiększyć możliwość ponownego użycia 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
Organizuj funkcje składane poza klasą GlanceAppWidget
, aby umożliwić ponowne wykorzystanie 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 Twoja funkcja kompozycyjna uzyskuje dostęp do klasy LocalSize
, zanim udostępnisz w teście element kompozycyjny, ustaw zamierzony rozmiar na potrzeby testu. Rozmiar domyślny to 349,dp x 455,dp, co odpowiada widżetowi 5 x 4 wyświetlanemu na 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 Twój widżet AppWidget korzysta z elementu
sizeMode == Exact
, możesz określić rozmiary do przetestowania w sposób podobny do określania rozmiaru widżetu oraz określić rozmiary w orientacji poziomej i pionowej, w których może się wyświetlać widżet, i je przetestować. - 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ładowy kod znajdziesz w dokumentacji referencyjnej dotyczącej runGlanceAppWidgetUnitTest
.