Testen Sie die Benutzeroberfläche Ihrer App, um zu prüfen, ob der Compose-Code korrekt funktioniert. So kannst du Fehler frühzeitig erkennen und die Qualität deiner App verbessern.
Compose bietet eine Reihe von Test-APIs, mit denen Sie Elemente finden, ihre Attribute prüfen und Nutzeraktionen ausführen können. Die APIs bieten auch erweiterte Funktionen wie die Zeitmanipulation. Mit diesen APIs können Sie robuste Tests erstellen, mit denen das Verhalten Ihrer App überprüft wird.
Aufrufe
Wenn Sie anstelle von „Schreiben“ mit Ansichten arbeiten, lesen Sie den allgemeinen Abschnitt Apps unter Android testen.
Ein guter Ausgangspunkt ist der Leitfaden UI-Tests automatisieren. Darin wird beschrieben, wie Sie Tests automatisieren können, die auf dem Gerät ausgeführt werden, einschließlich der Verwendung von Ansichten.
Schlüsselkonzepte
Im Folgenden finden Sie einige Schlüsselkonzepte zum Testen des Compose-Codes.
- Semantik: Zusammensetzungstests interagieren mit der UI über Semantik, die Teile der Benutzeroberfläche eine Bedeutung verleiht und zusammen mit der UI-Hierarchie generiert wird.
- Test-APIs: Compose bietet Test-APIs, um Elemente zu finden, Assertions für ihren Status und ihre Attribute vorzunehmen und Aktionen zur Simulation von Nutzerinteraktionen durchzuführen.
- Synchronisierung: Standardmäßig werden Compose-Tests automatisch mit der UI synchronisiert und warten, bis sie inaktiv ist, bevor Assertions erstellt oder Aktionen ausgeführt werden.
- Interoperabilität: In hybriden Anwendungen können Tests nahtlos mit Compose- und View-basierten Elementen interagieren und in andere Test-Frameworks eingebunden werden.
Spickzettel für Tests
In der Kurzübersicht zu Tests finden Sie eine Übersicht über alle wichtigen Themen, die Sie über das Testen in Compose wissen sollten.
Einrichten
Richten Sie Ihre App so ein, dass Sie Code zum Schreiben testen können.
Fügen Sie zuerst der build.gradle
-Datei des Moduls mit Ihren UI-Tests die folgenden Abhängigkeiten hinzu:
// Test rules and transitive dependencies:
androidTestImplementation("androidx.compose.ui:ui-test-junit4:$compose_version")
// Needed for createComposeRule(), but not for createAndroidComposeRule<YourActivity>():
debugImplementation("androidx.compose.ui:ui-test-manifest:$compose_version")
Dieses Modul enthält einen ComposeTestRule
und eine Implementierung für Android namens AndroidComposeTestRule
. Mit dieser Regel können Sie „Inhalte verfassen“ festlegen oder auf die Aktivität zugreifen. Sie erstellen die Regeln mithilfe von Fabrikfunktionen, entweder createComposeRule
oder, wenn Sie Zugriff auf eine Aktivität benötigen, createAndroidComposeRule
. Ein typischer UI-Test für Compose sieht so aus:
// file: app/src/androidTest/java/com/package/MyComposeTest.kt
class MyComposeTest {
@get:Rule val composeTestRule = createComposeRule()
// use createAndroidComposeRule<YourActivity>() if you need access to
// an activity
@Test
fun myTest() {
// Start the app
composeTestRule.setContent {
MyAppTheme {
MainScreen(uiState = fakeUiState, /*...*/)
}
}
composeTestRule.onNodeWithText("Continue").performClick()
composeTestRule.onNodeWithText("Welcome").assertIsDisplayed()
}
}
Zusätzliche Ressourcen
- Apps unter Android testen: Die Haupt-Landingpage für Android-Tests bietet einen umfassenderen Überblick über die Grundlagen und Testverfahren.
- Grundlagen des Testens: Hier erfahren Sie mehr über die grundlegenden Konzepte beim Testen einer Android-App.
- Lokale Tests: Einige Tests können Sie lokal auf Ihrer eigenen Workstation ausführen.
- Instrumentierte Tests:Es empfiehlt sich, auch instrumentierte Tests auszuführen. Das sind Tests, die direkt auf dem Gerät ausgeführt werden.
- Kontinuierliche Integration: Mit der kontinuierlichen Integration können Sie Ihre Tests in Ihre Bereitstellungspipeline einbinden.
- Unterschiedliche Bildschirmgrößen testen: Da Nutzern eine Vielzahl von Geräten zur Verfügung steht, sollten Sie verschiedene Bildschirmgrößen testen.
- Espresso: Obwohl Espresso für viewbasierte UIs gedacht ist, können Kenntnisse zu Espresso auch für einige Aspekte von Compose-Tests hilfreich sein.
Codelab
Weitere Informationen finden Sie im Codelab zum Testen von Jetpack Compose-Tests.
Produktproben
In order to launch new features on their Android app, Headspace spent 8 months refactoring their architecture and rewriting in Kotlin. Learn how this reboot helped their business grow. SmartNews helps millions of people discover their world everyday by sharing timely news from a diverse set of news sources. Twitter is one of the most widely used social media platforms where users can see what’s happening in the world at any given moment. The Google Home app helps set up, manage, and control your Google Home, Google Nest, and Chromecast devices—plus thousands of connected home products like lights, cameras, thermostats, and more. Duolingo is one of the most popular language learning platforms in the world, and one of the most-downloaded free education apps on Google Play, with more than 200 million downloads.Headspace's Android reboot increases monthly active users by 15%
SmartNews reduces lines of code by 20% and improves team morale with Kotlin
Twitter increases developer productivity and code reliability with Kotlin
Google Home reduces #1 cause of crashes by 33%
Duolingo completes migration to Kotlin and reduces its line count by an average of 30%
Derzeit liegen keine Empfehlungen vor.
Versuchen Sie, sich bei Ihrem Google-Konto anzumelden.