Layout von „Compose“ testen

Testen Sie die Benutzeroberfläche Ihrer App, um zu prüfen, ob sich Ihr Compose-Code richtig 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 überprüfen und Nutzeraktionen ausführen können. Die APIs enthalten auch erweiterte Funktionen wie die Zeitbearbeitung. Mit diesen APIs können Sie robuste Tests erstellen, mit denen Sie das Verhalten Ihrer App überprüfen.

Aufrufe

Wenn Sie mit Views anstelle von Compose arbeiten, lesen Sie den allgemeinen Abschnitt Apps auf Android testen.

Ein guter Ausgangspunkt ist insbesondere 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 von Compose-Code:

  • Semantik: Die Semantik gibt Ihrer Benutzeroberfläche eine Bedeutung, sodass Tests mit bestimmten Elementen interagieren können.
  • Testing APIs: Mit Testing APIs können Sie Elemente finden, ihre Attribute überprü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 Zusicherungen gemacht werden.
  • Interoperabilität: Dank der Interoperabilität können Tests sowohl mit Compose- als auch mit View-basierten Elementen in derselben App ausgeführt werden.

Übersicht für Tests

Eine Übersicht über alle wichtigen Themen, die Sie zum Testen in Compose kennen sollten, finden Sie im Spickzettel für Tests.

Einrichten

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

Fügen Sie zuerst die folgenden Abhängigkeiten der Datei build.gradle des Moduls hinzu, 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 ein ComposeTestRule und eine Implementierung für Android namens AndroidComposeTestRule. Mit dieser Regel können Sie Inhalte erstellen oder auf die Aktivität 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 unter 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 viele verschiedene Geräte verwenden können, sollten Sie verschiedene Bildschirmgrößen testen.
  • Espresso: Obwohl Espresso für ansichtsbasierte UIs gedacht ist, kann es für einige Aspekte von Compose-Tests hilfreich sein.

Codelab

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

Produktproben