L'API de test unitaire Glance vous permet de tester votre code Glance sans gonfler les vues
ou si vous avez besoin
d'un outil de création automatique d'UI. Par exemple, l'API de test unitaire vous permet de vérifier
conditions (par exemple, si des éléments se trouvent dans une liste ou si des boîtes ont été
à l'aide d'outils de mise en correspondance tels que hasContentDescriptionEqualTo
ou isChecked
.
Cette API est légère et nécessite moins de configuration. Vous pouvez donc effectuer des tests développement au fur et à mesure que vous développez des éléments individuels de votre widget et que vous les organisez et améliorer la réutilisation du code.
Configuration
Les dépendances requises pour utiliser la bibliothèque de tests unitaires sont présentées dans le les exemples suivants:
// Other Glance and Compose runtime dependencies.
...
testImplementation 'androidx.glance:glance-testing:1.1.0'
testImplementation 'androidx.glance:glance-AppWidget-testing:1.1.0'
testImplementation 'org.robolectric:robolectric:4.11.1'
...
// You may include additional dependencies, such as Robolectric, if your test
// needs to set a LocalContext.
Structure du test
Organisez les fonctions composables en dehors de la classe GlanceAppWidget
pour activer
la réutilisation du code et les tests unitaires. Réduisez la complexité des unités testées
autant que possible.
class MyGlanceComposableTest {
@Test
fun myNewsItemComposable_largeSize_hasAuthorAsSubtitle() = runGlanceAppWidgetUnitTest {
// Prepare inputs and state
setAppWidgetSize(100.dp, 100.dp)
// Set the composable under test
provideComposable {
MyNewsItemComposable(TEST_NEWS_ITEM)
}
// Perform assertions
onNode(hasTestTag("subTitle"))
.assertHasText(TEST_NEWS_ITEM.authorName)
}
}
Définir le contexte et la taille du test
Si votre fonction composable lit le contexte à l'aide de LocalContext.current()
vous devez définir un contexte à l'aide de la méthode LocalContext.current()
.
Sinon, cette étape est facultative.
Vous pouvez utiliser n'importe quel framework de tests unitaires Android basé sur JVM, comme Roboletric, pour fournir le contexte.
Si votre fonction composable accède à LocalSize
, définissez la taille souhaitée
pour le test avant de fournir un composable dans le test. La taille par défaut est
349 dp x 455 dp, ce qui équivaut à un widget 5x4 affiché sur un appareil Pixel 4
en mode Portrait.
- Si votre AppWidget utilise
sizeMode == Single
, vous pouvez le définir surminWidth
etminHeight
dans le fichierinfo.xml
de votre widget. - Si votre AppWidget utilise
sizeMode == Exact
, vous pouvez identifier les tailles à de la même manière que pour déterminer la taille de votre widget, puis Identifiez les formats paysage et portrait sur lesquels votre widget peut s'afficher et testez pour eux. - Si votre AppWidget utilise
sizeMode == Responsive
, vous pouvez le définir sur l'une des les tailles de la liste que vous fournissez lorsque vous spécifiezsizeMode
.
Le délai avant expiration d'un test est par défaut d'une seconde, mais vous pouvez transmettre une valeur
durée en tant qu'argument de la méthode runGlanceAppWidgetUnitTest
si votre test
l'infrastructure applique un délai d'expiration différent.
Pour en savoir plus et obtenir des exemples de code, consultez la documentation de référence
runGlanceAppWidgetUnitTest