Layout von „Compose“ testen

Testen Sie die UI Ihrer Anwendung, um zu prüfen, ob das Verhalten des Compose-Codes korrekt ist. 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 Zeitmanipulation. Mit diesen APIs kannst du robuste Tests erstellen, um das Verhalten deiner Anwendung zu prüfen.

Aufrufe

Wenn Sie mit Ansichten statt der Funktion „Schreiben“ arbeiten, lesen Sie den allgemeinen Abschnitt Apps unter 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 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, mit denen du Elemente finden, Assertions für ihren Status und ihre Attribute erstellen und Aktionen zur Simulation von Nutzerinteraktionen ausführen kannst.
  • 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

Im Test-Cheatsheet finden Sie eine Übersicht aller wichtigen Themen zum Testen in Compose.

Einrichten

Richten Sie Ihre App so ein, dass Sie Code zum Schreiben testen können.

Fügen Sie der Datei build.gradle des Moduls, das Ihre UI-Tests enthält, zuerst 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 ein ComposeTestRule und eine Android-Implementierung namens AndroidComposeTestRule. Mit dieser Regel können Sie „Inhalt erstellen“ festlegen oder auf die Aktivität zugreifen. Sie erstellen die Regeln mithilfe von 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: Die Haupt-Landingpage für Android-Tests bietet einen umfassenderen Überblick über die Grundlagen und Testverfahren.
  • Testgrundlagen:Hier findest du weitere Informationen zu den Kernkonzepten, die dem Testen von Android-Apps zugrunde liegen.
  • Lokale Tests:Sie können einige Tests 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.
  • Verschiedene Bildschirmgrößen testen:Da einige Geräte den Nutzern zur Verfügung stehen, solltest du verschiedene Bildschirmgrößen testen.
  • Espresso: Diese Funktion ist zwar für Ansichtsbasierte Benutzeroberflächen gedacht, kann aber bei einigen Aspekten des Compose-Tests hilfreich sein.

Codelab

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

Produktproben