Mit der Glance-Einheitentest-API können Sie Ihren Glance-Code testen, ohne die Ansichten zu erhöhen oder ein UI-Automatisierungstool zu benötigen. Mit der Unit Test API können Sie beispielsweise mithilfe von Matchern wie hasContentDescriptionEqualTo
oder isChecked
Bedingungen prüfen, z. B. ob Elemente in einer Liste enthalten sind oder ob Kästchen angeklickt wurden.
Diese API ist einfach und erfordert weniger Einrichtung. Sie können also eine testgesteuerte Entwicklung durchführen, während Sie einzelne Teile Ihres Widgets entwickeln und organisieren, um die Wiederverwendung von Code zu verbessern.
Einrichten
Die folgenden Beispiele zeigen die für die Verwendung der Einheitentestbibliothek erforderlichen Abhängigkeiten:
// 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.
Teststruktur
Organisieren Sie zusammensetzbare Funktionen außerhalb der Klasse GlanceAppWidget
, um die Wiederverwendung von Code und das Testen von Einheiten zu ermöglichen. Reduzieren Sie die Komplexität der zu testenden Einheiten so weit wie möglich.
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)
}
}
Kontext und Größe für den Test festlegen
Wenn die zusammensetzbare Funktion den Kontext mit der Methode LocalContext.current()
liest, müssen Sie einen Kontext mit der Methode LocalContext.current()
festlegen.
Andernfalls ist dieser Schritt optional.
Sie können ein beliebiges JVM-basiertes Framework für Android-Einheitentests wie etwa Roboletric verwenden, um den Kontext bereitzustellen.
Wenn Ihre zusammensetzbare Funktion auf LocalSize
zugreift, legen Sie die gewünschte Größe für den Test fest, bevor Sie im Test eine zusammensetzbare Funktion bereitstellen. Die Standardgröße ist 349 dp × 455 dp. Dies entspricht einem 5 × 4-Widget, das auf einem Pixel 4 im Hochformat angezeigt wird.
- Wenn dein AppWidget
sizeMode == Single
verwendet, kannst du dies in der Dateiinfo.xml
deines Widgets aufminWidth
undminHeight
festlegen. - Wenn dein AppWidget
sizeMode == Exact
verwendet, kannst du die zu testenden Größen auf ähnliche Weise wie eine Größe für dein Widget bestimmen und Größen im Quer- und Hochformat ermitteln, in denen dein Widget angezeigt werden kann, und für sie testen. - Wenn dein AppWidget
sizeMode == Responsive
verwendet, kannst du dafür eine der Größen aus der Liste festlegen, die du beim Festlegen vonsizeMode
angibst.
Die Standarddauer für ein Testzeitlimit beträgt 1 Sekunde. Sie können jedoch eine benutzerdefinierte Dauer als Argument an die Methode runGlanceAppWidgetUnitTest
übergeben, wenn Ihre Testinfrastruktur ein anderes Zeitlimit erzwingt.
Weitere Informationen und Codebeispiele finden Sie in der Referenzdokumentation zu runGlanceAppWidgetUnitTest
.