Interfejs API do testów jednostkowych Glance umożliwia testowanie kodu Glance bez zwiększania liczby wyświetleń
lub automatyzator UI. Na przykład interfejs API do testów jednostkowych pozwala sprawdzić,
warunków, takich jak to, czy elementy znajdują się na liście lub czy pola zostały
zaznaczono za pomocą dopasowań, takich jak hasContentDescriptionEqualTo
lub isChecked
.
Ten interfejs API jest prostszy i wymaga mniej konfiguracji, dzięki czemu można przeprowadzać podczas opracowywania poszczególnych elementów widżetu i uporządkowania ich w taki sposób, żeby ułatwić ponowne używanie kodu.
Konfiguracja
Zależności wymagane do korzystania z biblioteki testów jednostkowych są wyświetlane w następujące przykłady:
// 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.
Przetestuj strukturę
Uporządkuj funkcje kompozycyjne poza klasą GlanceAppWidget
, aby włączyć
ponowne używanie kodu i testowanie jednostkowe. Zmniejsz złożoność testowanych jednostek jako
jak to tylko możliwe.
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 kompozycyjna odczytuje kontekst za pomocą funkcji LocalContext.current()
musisz określić kontekst za pomocą metody LocalContext.current()
.
W przeciwnym razie ten krok jest opcjonalny.
Możesz użyć dowolnej platformy do testowania jednostkowego Androida opartego na JVM, takiej jak Roboletric, i zapewniają kontekst.
Jeśli funkcja kompozycyjna uzyskuje dostęp do elementu LocalSize
, ustaw zamierzony rozmiar
przed udostępnieniem elementu kompozycyjnego w teście. Rozmiar domyślny to
349,dp x 455,dp, co odpowiada widżetowi 5 x 4 wyświetlanym na urządzeniu Pixel 4
w trybie pionowym.
- Jeśli Twój widżet AppWidget korzysta z atrybutu
sizeMode == Single
, możesz ustawić tę wartość naminWidth
iminHeight
w plikuinfo.xml
widżetu. - Jeśli Twój widżet AppWidget korzysta z atrybutu
sizeMode == Exact
, możesz określić rozmiary, do których testuj w podobny sposób jak określanie rozmiaru widżetu oraz określić, w jakich rozmiarach może się pojawić Twój widżet w orientacji poziomej i pionowej, dla nich. - Jeśli Twój widżet AppWidget korzysta z atrybutu
sizeMode == Responsive
, możesz ustawić jedną z tych opcji: rozmiary z listy podanej podczas określania właściwościsizeMode
.
Domyślny limit czasu testu to 1 sekunda, ale możesz przesłać niestandardowy
czas trwania jako argument w metodzie runGlanceAppWidgetUnitTest
, jeśli testujesz
infrastruktura wymusza inny czas oczekiwania.
Więcej informacji i przykładowe fragmenty kodu znajdziesz w dokumentacji
runGlanceAppWidgetUnitTest