Écrire des tests Jetpack Compose pour les appareils pliables
Jetpack Compose fournit une API de test qui peut être utilisée pour tester vos dispositions, à l’instar de l’utilisation d’Expresso avec le système d’affichage traditionnel. Le Gestionnaire de fenêtres Jetpack fournit également une bibliothèque de test qui permet de simuler facilement des objets . Grâce à ces ressources, vous pouvez écrire des tests d’interface utilisateur instrumentés dans vos projets Compose pour des appareils pliables et double écran.
Bibliothèque ComposeTesting
Pour réduire la quantité de code nécessaire à l’écriture de tests pour appareils pliables, vous pouvez également utiliser la bibliothèque ComposeTesting, qui fait partie de notre Kit de test. Cette bibliothèque contient des méthodes d’utilitaire pour simuler des objets FoldingFeature
et d’autres fonctionnalités utiles pour les tests d’interface utilisateur Compose, notamment des méthodes d’assistance de mouvement de balayage et de ressource de chaîne.
Pour utiliser la bibliothèque ComposeTesting dans vos tests, veillez à cliquer sur l’onglet Avec la bibliothèque ComposeTesting pour obtenir les extraits de code de cet article.
Configuration
Créez un fichier de classe de test dans le répertoire androidTest. C’est là que vous ajouterez les extraits de code pour les tests et les règles de test.
Vérifiez que vous disposez du référentiel
mavenCentral()
dans votre fichier build.gradle de premier niveau :allprojects { repositories { google() mavenCentral() } }
Ajoutez les dépendances suivantes au fichier build.gradle de niveau module (la version actuelle peut être différente de ce qui est illustré ici) :
androidTestImplementation "androidx.compose.ui:ui-test-junit4:1.3.0" androidTestImplementation "androidx.window:window-testing:1.0.0" // Only necessary if Jetpack Window Manager isn't imported for implementation androidTestImplementation "androidx.window:window:1.0.0"
Vérifiez que est
compileSdkVersion
défini sur API 33 et que esttargetSdkVersion
défini sur API 32 ou version ultérieure dans votre fichier build.gradle au niveau du module :android { compileSdkVersion 33 defaultConfig { targetSdkVersion 32 } ... }
Créez un
TestRule
qui peut effectuer des vérifications Compose et simuler des fonctionnalités de repli. Pour ce faire, vous pouvez chaîner deux règles : une règle d’éditeurWindowLayoutInfo
et une règle de test Android Compose.private val composeTestRule = createAndroidComposeRule<MainActivity>() private val publisherRule = WindowLayoutInfoPublisherRule() @get:Rule val testRule: TestRule init { testRule = RuleChain.outerRule(publisherRule).around(composeTestRule) }
Comment écrire des tests
Pour écrire un test Compose pour les appareils pliables et double écran, suivez les quatre étapes suivantes :
- Définir le contenu du test
- Simuler un
FoldingFeature
- Rechercher le ou les nœuds à tester
- Effectuer des assertions ou des actions sur le(s) nœud(s)
Les extraits de code ci-dessous montrent un exemple de test qui vérifie si les éléments de texte « pane 1 » et « pane 2 » sont affichés dans le composable TwoPaneSample
quand un élément vertical FoldingFeature
est présent.
@Test
fun sample_verticalFoldingFeature_showsTwoPanes() {
// 1. Optional: set the content of the test (default is MainActivity content)
composeTestRule.activity.setContent {
TwoPaneSample()
}
// 2. Simulate a vertical FoldingFeature
composeTestRule.activityRule.scenario.onActivity { activity ->
val verticalFoldingFeature = FoldingFeature(
activity = activity,
orientation = FoldingFeature.Orientation.VERTICAL
)
val windowLayoutInfo = TestWindowLayoutInfo(listOf(verticalFoldingFeature))
publisherRule.overrideWindowLayoutInfo(windowLayoutInfo)
}
// 3. Find the nodes to test and 4. Perform assertions on the nodes
composeTestRule.onNodeWithText("pane 1").assertIsDisplayed()
composeTestRule.onNodeWithText("pane 2").assertIsDisplayed()
}
Lors de l’écriture de vos propres tests, vous pouvez personnaliser chaque étape en fonction de vos besoins. Tout composable peut être placé dans le setContent
lambda et vous pouvez modifier la position, la taille, l’orientation et l’état de setContent
.
Ressources
Pour en savoir plus sur les tests avec Jetpack Compose et Jetpack Window Manager, reportez-vous aux ressources suivantes :