Interfejs API testów jednostkowych Glance umożliwia testowanie kodu Glance bez powiększania widoków ani korzystania z automatyzacji interfejsu. Na przykład interfejs API testów jednostkowych umożliwia weryfikowanie warunków, takich jak to, czy elementy znajdują się na liście lub czy pola zostały zaznaczone, za pomocą funkcji dopasowujących, np. hasContentDescriptionEqualTo
lub isChecked
.
Ten interfejs API jest lekki i wymaga mniej konfiguracji, dzięki czemu możesz przeprowadzać testy podczas tworzenia poszczególnych elementów widżetu i organizować je w celu zwiększenia możliwości ponownego wykorzystania kodu.
Konfiguracja
Zależności wymagane do korzystania z biblioteki testów jednostkowych są pokazane w przykładach poniżej:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.1'
testImplementation 'androidx.glance:glance-appwidget-testing:1.1.1'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Struktura testu
Organizuj funkcje kompozycyjne poza klasą GlanceAppWidget
, aby umożliwić ponowne użycie kodu i testowanie jednostkowe. Zmniejsz złożoność testowanych urządzeń 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)
}
}
Ustawianie kontekstu i rozmiaru testu
Jeśli funkcja kompozycyjna odczytuje kontekst za pomocą metody LocalContext.current()
, musisz ustawić kontekst za pomocą setContext()
. W przeciwnym razie ten krok jest opcjonalny.
Aby zapewnić kontekst, możesz użyć dowolnej platformy testów jednostkowych na Androida opartej na JVM, np. Robolectric.
Jeśli funkcja kompozycyjna uzyskuje dostęp do LocalSize
, przed podaniem funkcji kompozycyjnej w teście ustaw zamierzony rozmiar. Domyślny rozmiar to 349 dp × 455 dp, co odpowiada widżetowi 5x4 wyświetlanemu na urządzeniu Pixel 4 w trybie pionowym.
- Jeśli widżet aplikacji korzysta z
sizeMode == Single
, możesz ustawić te wartości wminWidth
iminHeight
w plikuinfo.xml
widżetu. - Jeśli Twój widżet aplikacji korzysta z
sizeMode == Exact
, możesz określić rozmiary do przetestowania w podobny sposób, jak określasz rozmiar widżetu. Możesz też określić rozmiary w orientacji poziomej i pionowej, w których może się wyświetlać widżet, i przeprowadzić testy dla tych rozmiarów. - Jeśli Twój widżet aplikacji korzysta z parametru
sizeMode == Responsive
, możesz ustawić jeden z rozmiarów z listy podanej podczas określania parametrusizeMode
.
Domyślny czas oczekiwania na test to 1 sekunda, ale możesz przekazać niestandardowy czas oczekiwania jako argument do metody runGlanceAppWidgetUnitTest
, jeśli Twoja infrastruktura testowa wymusza inny czas oczekiwania.
Więcej informacji i przykłady kodu znajdziesz w dokumentacji referencyjnej dotyczącej runGlanceAppWidgetUnitTest
.