Layout von „Compose“ testen

Testen Sie die UI Ihrer Anwendung, um zu prüfen, ob das Verhalten des Compose-Codes korrekt ist. 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 bieten auch erweiterte Funktionen wie Zeitmanipulation. Mit diesen APIs können Sie robuste Tests erstellen, mit denen das Verhalten Ihrer App überprüft wird.

Aufrufe

Wenn Sie mit Ansichten statt mit Compose arbeiten, lesen Sie den allgemeinen Abschnitt Apps auf Android-Geräten 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, einschließlich der Verwendung von Ansichten.

Schlüsselkonzepte

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

  • Semantik: Zusammenstellen von Tests, die mit der Benutzeroberfläche über Semantik interagieren, die Teilen der Benutzeroberfläche Bedeutung verleiht und parallel zur Benutzeroberflächenhierarchie generiert wird.
  • Test-APIs: Compose bietet Test-APIs zum Suchen von Elementen, zum Stellen von Behauptungen zu ihrem Status und ihren Eigenschaften und zum Ausführen von Aktionen, um Nutzerinteraktionen zu simulieren.
  • Synchronisierung: Standardmäßig werden Compose-Tests automatisch mit der Benutzeroberfläche synchronisiert. Dabei wird gewartet, bis die Benutzeroberfläche inaktiv ist, bevor Behauptungen aufgestellt oder Aktionen ausgeführt werden.
  • Interoperabilität: In Hybrid-Apps können Tests nahtlos sowohl mit Compose- als auch mit datenbankbasierten Elementen interagieren und in andere Testframeworks eingebunden werden.

Cheatsheet 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: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.
  • Continuous Integration: Mit Continuous 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: 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 mit Jetpack Compose.

Produktproben