Layout von „Compose“ testen

Testen Sie die Benutzeroberfläche Ihrer App, um zu prüfen, ob sich der Compose-Code wie erwartet verhält. So können Sie Fehler frühzeitig erkennen und die Qualität Ihrer 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 enthalten auch erweiterte Funktionen wie die Zeitmanipulation. Mit diesen APIs können Sie robuste Tests erstellen, um das Verhalten Ihrer App zu prüfen.

Aufrufe

Wenn Sie mit Ansichten statt mit Compose 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, auch wenn Sie Ansichten verwenden.

Schlüsselkonzepte

Im Folgenden finden Sie einige wichtige Konzepte zum Testen Ihres Compose-Codes:

  • Semantik: Die Semantik verleiht Ihrer Benutzeroberfläche Bedeutung, sodass Tests mit bestimmten Elementen interagieren können.
  • Test-APIs: Mit Test-APIs können Sie Elemente finden, ihre Attribute prüfen und Nutzeraktionen ausführen.
  • Synchronisierung: Bei der Synchronisierung wird geprüft, ob Tests warten, bis die Benutzeroberfläche inaktiv ist, bevor Aktionen ausgeführt oder Assertions erstellt werden.
  • Interoperabilität: Dank der Interoperabilität können Tests sowohl mit Compose- als auch mit View-basierten Elementen in derselben App funktionieren.

Spickzettel für Tests

Im Spickzettel für Tests findest du eine Übersicht über alle wichtigen Themen, die du über Tests in Compose wissen solltest.

Einrichtung

Richten Sie Ihre App so ein, dass Sie Compose-Code testen können.

Fügen Sie zuerst die folgenden Abhängigkeiten in die build.gradle-Datei des Moduls ein, das Ihre UI-Tests enthält:

// 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 eine ComposeTestRule und eine Implementierung für Android namens AndroidComposeTestRule. Mit dieser Regel können Sie Compose-Inhalte festlegen oder auf die Activity zugreifen. Sie erstellen die Regeln mit Factory-Funktionen, 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 auf Android testen: Auf der Haupt-Landingpage für Android-Tests finden Sie einen umfassenderen Überblick über die Grundlagen und Techniken des Testens.
  • Grundlagen des Testens: Hier finden Sie weitere Informationen zu den grundlegenden Konzepten für das Testen einer Android-App.
  • Lokale Tests: Einige Tests können lokal auf Ihrer Workstation ausgeführt werden.
  • Instrumentierte Tests: Es empfiehlt sich, auch instrumentierte Tests auszuführen. Das sind Tests, die direkt auf dem Gerät ausgeführt werden.
  • Continuous Integration: Mit Continuous Integration können Sie Ihre Tests in Ihre Bereitstellungspipeline einbinden.
  • Verschiedene Bildschirmgrößen testen: Da Nutzer so viele verschiedene Geräte zur Verfügung haben, sollten Sie verschiedene Bildschirmgrößen testen.
  • Espresso: Obwohl Espresso für ansichtsbasierte UIs gedacht ist, kann es auch für einige Aspekte von Compose-Tests hilfreich sein.

Codelab

Weitere Informationen finden Sie im Codelab zum Testen von Jetpack Compose.

Beispiele