Layout von „Compose“ testen

Testen Sie die Benutzeroberfläche Ihrer Anwendung, um zu prüfen, ob der Code zum Schreiben korrekt funktioniert. 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 die Zeitmanipulation. Mit diesen APIs können Sie solide Tests erstellen, die das Verhalten Ihrer Anwendung überprüfen.

Aufrufe

Wenn Sie statt „Compose“ mit Ansichten arbeiten, finden Sie weitere Informationen im allgemeinen Abschnitt Apps auf Android-Geräten testen.

Ein guter Ausgangspunkt ist der Leitfaden UI-Tests automatisieren. Sie erfahren, wie Sie Tests automatisieren können, die auf dem Gerät ausgeführt werden, auch bei Verwendung von Ansichten.

Schlüsselkonzepte

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

  • Semantik: Compose-Tests interagieren mithilfe von Semantik mit der UI. Dadurch werden Teile der UI aussagekräftig und werden zusammen mit der UI-Hierarchie generiert.
  • APIs testen: Compose bietet Test-APIs, um Elemente zu finden, Assertions zu ihrem Status und ihren Eigenschaften zu erstellen und Aktionen auszuführen, um Nutzerinteraktionen zu simulieren.
  • Synchronisierung: Standardmäßig werden Compose-Tests automatisch mit der UI synchronisiert. Dabei wird gewartet, bis sie inaktiv ist, bevor Assertions ausgeführt oder Aktionen ausgeführt werden.
  • Interoperabilität: In Hybridanwendungen können Tests nahtlos mit Compose- und View-basierten Elementen interagieren und in andere Test-Frameworks einbinden.

Tests auf einen Blick

Im Test-Spickzettel finden Sie einen Überblick über alle wichtigen Themen, die Sie über Tests in Compose kennen sollten.

Einrichten

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

Fügen Sie zuerst die folgenden Abhängigkeiten in die Datei build.gradle 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 ein ComposeTestRule und eine Implementierung für Android namens AndroidComposeTestRule. Mit dieser Regel können Sie „Inhalt verfassen“ festlegen 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 die Funktion „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()
    }
}

Weitere Ressourcen

  • Test-Apps unter Android: Die Haupt-Landingpage für Android-Tests bietet einen umfassenderen Überblick über die Grundlagen und Techniken von Tests.
  • Grundlagen des Testens:Weitere Informationen zu den Kernkonzepten des Testens 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 durchzufü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.
  • Testen Sie verschiedene Bildschirmgrößen:Da Nutzer auf vielen Geräten zur Verfügung stehen, sollten Sie Tests für unterschiedliche Bildschirmgrößen durchführen.
  • Espresso: Diese Espresso-Kenntnisse sind zwar für ansichtsbasierte UIs vorgesehen, können aber für einige Aspekte von Compose-Tests hilfreich sein.

Codelab

Weitere Informationen finden Sie im Codelab zu Jetpack Compose Testing.

Produktproben