Mit der Glance Unit Test API können Sie Ihren Glance-Code testen, ohne die Anzahl der Aufrufe zu erhöhen.
oder ein UI-Automatisierungstool benötigen. Mit der Unit Test API können Sie beispielsweise
z. B. ob Elemente in einer Liste enthalten sind oder ob Felder
ausgewählt. Verwenden Sie dazu Matcher wie hasContentDescriptionEqualTo
oder isChecked
.
Diese API ist ressourcensparend und erfordert weniger Einrichtung, sodass Sie testgesteuerte bei der Entwicklung einzelner Widgets und der Organisation die Wiederverwendung von Code verbessern.
Einrichten
Die Abhängigkeiten, die für die Verwendung der Einheitentestbibliothek erforderlich sind, werden in der folgende Beispiele:
// 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 Funktion zu aktivieren.
die Wiederverwendung von Code
und Unittests. Reduzieren Sie die Komplexität der zu testenden Einheiten,
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 mithilfe der Funktion LocalContext.current()
liest
müssen Sie mit der Methode LocalContext.current()
einen Kontext festlegen.
Andernfalls ist dieser Schritt optional.
Sie können ein beliebiges JVM-basiertes Framework für Android-Einheitentests wie etwa Roboletric verwenden, um Kontext liefern.
Wenn die zusammensetzbare Funktion auf LocalSize
zugreift, legen Sie die gewünschte Größe fest.
bevor Sie eine zusammensetzbare Funktion bereitstellen. Die Standardgröße ist
349 dp × 455 dp.Dies entspricht einem 5 × 4-Widget auf einem Pixel 4.
im Hochformat.
- Wenn dein AppWidget
sizeMode == Single
verwendet, kannst du dies auf dieminWidth
undminHeight
in derinfo.xml
-Datei deines Widgets. - Wenn Ihr AppWidget
sizeMode == Exact
verwendet, können Sie die Größen identifizieren, auf ähnliche Weise, wie Sie eine Größe für Ihr Widget bestimmen und Größen im Quer- und Hochformat zu ermitteln, in denen Ihr Widget erscheinen kann, und testen Sie für sie. - Wenn dein AppWidget
sizeMode == Responsive
verwendet, kannst du dafür eines der folgenden Werte festlegen: die Größen aus der Liste, die Sie beim Angeben dersizeMode
angeben.
Die Standarddauer für ein Testzeitlimit beträgt 1 Sekunde. Sie können jedoch einen benutzerdefinierten
„duration“ als Argument an die Methode runGlanceAppWidgetUnitTest
, wenn der Test
erzwingt eine andere Zeitüberschreitung.
Weitere Informationen und Codebeispiele finden Sie in der Referenzdokumentation zu
runGlanceAppWidgetUnitTest