Tester votre mise en page Compose

Testez l'UI de votre application pour vérifier que le comportement de votre code Compose est correct. Cela vous permet de détecter les erreurs rapidement et d'améliorer la qualité de votre application.

Compose fournit un ensemble d'API de test pour trouver des éléments, vérifier leurs attributs et effectuer des actions utilisateur. Les API incluent également des fonctionnalités avancées telles que la manipulation du temps. Utilisez ces API pour créer des tests robustes qui vérifient le comportement de votre application.

Vues

Si vous utilisez des vues au lieu de Compose, consultez la section générale Tester des applications sur Android.

Le guide Automatiser les tests de l'interface utilisateur est un bon point de départ. Il explique comment automatiser les tests exécutés sur l'appareil, y compris lorsque vous utilisez des vues.

Concepts clés

Voici quelques concepts clés pour tester votre code Compose :

  • Sémantique : la sémantique donne du sens à votre UI, ce qui permet aux tests d'interagir avec des éléments spécifiques.
  • API de test : les API de test vous permettent de trouver des éléments, de vérifier leurs attributs et d'effectuer des actions utilisateur.
  • Synchronisation : la synchronisation vérifie que les tests attendent que l'interface utilisateur soit inactive avant d'effectuer des actions ou des assertions.
  • Interopérabilité : l'interopérabilité permet aux tests de fonctionner à la fois avec Compose et avec des éléments basés sur des vues dans la même application.

Aide-mémoire pour les tests

Consultez l'aide-mémoire sur les tests pour obtenir un aperçu de tous les sujets clés à connaître sur les tests dans Compose.

Configuration

Configurez votre application pour tester le code Compose.

Commencez par ajouter les dépendances suivantes au fichier build.gradle du module contenant vos tests d'interface utilisateur :

// 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")

Ce module inclut une ComposeTestRule et une intégration pour Android appelée AndroidComposeTestRule. Cette règle vous permet de configurer du contenu Compose ou d'accéder à l'activité. Vous créez les règles à l'aide de fonctions d'usine, soit createComposeRule, soit createAndroidComposeRule si vous avez besoin d'accéder à une activité. Voici à quoi ressemble un test d'interface utilisateur pour Compose :

// 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()
    }
}

Autres ressources

  • Tester des applications sur Android : la page de destination principale des tests Android offre une vue plus large des principes de base et des techniques de test.
  • Principes fondamentaux des tests : découvrez les concepts de base des tests d'une application Android.
  • Tests locaux : vous pouvez exécuter certains tests localement, sur votre propre poste de travail.
  • Tests d'instrumentation : il est également recommandé d'exécuter des tests d'instrumentation. C'est-à-dire des tests qui s'exécutent directement sur l'appareil.
  • Intégration continue : l'intégration continue vous permet d'intégrer vos tests dans votre pipeline de déploiement.
  • Tester différentes tailles d'écran : étant donné le grand nombre d'appareils disponibles pour les utilisateurs, vous devez tester différentes tailles d'écran.
  • Espresso : bien qu'il soit destiné aux UI basées sur les vues, Espresso peut toujours être utile pour certains aspects des tests Compose.

Codelab

Pour en savoir plus, consultez l'atelier de programmation Jetpack Compose.

Exemples