Tester dans Android Studio

Android Studio est conçu pour simplifier les tests. Il propose de nombreuses fonctionnalités permettant de simplifier la création, l'exécution et l'analyse des tests. Vous pouvez configurer des tests qui s'exécutent sur votre machine en local ou des tests d'instrumentation qui s'exécutent sur un appareil. Vous pouvez facilement exécuter un test unique ou un groupe de tests spécifique sur un ou plusieurs appareils. Les résultats s'affichent directement dans Android Studio.

Figure 1 : Android Studio affiche une vue d'ensemble des résultats des tests.

Cette page explique comment gérer les tests dans Android Studio. Pour apprendre à écrire des tests automatisés pour Android, consultez Tester des applications sur Android.

Types et emplacements de test

L'emplacement de vos tests dépend du type de test que vous écrivez. Les projets Android disposent de répertoires de code source par défaut pour les tests unitaires locaux et les tests d'instrumentation.

Les tests unitaires locaux sont situés à l'adresse module-name/src/test/java/. Il s'agit de tests qui s'exécutent sur la machine virtuelle Java (JVM) locale de votre appareil. Utilisez ces tests pour réduire le temps d'exécution lorsque vos tests n'ont pas de dépendances de framework Android ou lorsque vous pouvez créer des doubles de test pour ces dépendances. Pour savoir comment écrire des tests unitaires locaux, consultez la section Créer des tests unitaires locaux.

Les tests d'instrumentation se trouvent sous $module-name/src/androidTest/java/. Ces tests s'exécutent sur un appareil physique ou un émulateur. Sur l'application que vous testez, ils ont accès aux API Instrumentation qui vous fournissent des informations, telles que la classe Context, et vous permettent de contrôler l'application testée à partir de votre code de test. Les tests d'instrumentation sont intégrés dans un APK distinct. Ils disposent donc de leur propre fichier AndroidManifest.xml. Ce fichier est généré automatiquement, mais vous pouvez créer votre propre version sur $module-name/src/androidTest/AndroidManifest.xml, qui sera fusionnée avec le fichier manifeste généré. Utilisez des tests d'instrumentation lorsque vous écrivez des tests d'intégration et d'UI fonctionnels pour automatiser les interactions des utilisateurs, ou lorsque vos tests comportent des dépendances Android pour lesquelles vous ne pouvez pas créer de doubles de test. Pour en savoir plus sur l'écriture de tests d'instrumentation, consultez les sections Créer des tests d'instrumentation et Automatiser les tests de l'interface utilisateur.

Vous pouvez placer vos tests dans des répertoires spécifiques à des variantes de compilation afin de les limiter à certaines variantes. Par exemple, vous pouvez placer des tests unitaires locaux dans $module-name/src/testMyFlavor/java/ afin qu'ils ciblent votre application créée avec le code source de ce type de produit. Pour en savoir plus sur la création de ces tests personnalisés, consultez la section Créer un test d'instrumentation pour une variante de compilation.

Lorsque vous créez un projet ou ajoutez un module d'application, Android Studio crée les ensembles de sources de test détaillés précédemment et inclut un exemple de fichier de test dans chacun d'eux. Vous pouvez les voir dans la fenêtre Project (Projet) comme illustré dans la figure 2.

Figure 2. Les tests d'instrumentation (1) de votre projet et les tests JVM locaux (2) sont visibles dans la vue Project (Projet) à gauche ou dans la vue Android à droite.

Créer des tests

Pour ajouter un test à une classe ou à une méthode spécifique directement à partir de son code source, procédez comme suit :

  1. Ouvrez le fichier source contenant le code que vous souhaitez tester.
  2. Placez le curseur sur le nom de la classe ou de la méthode que vous souhaitez tester, puis appuyez sur Ctrl + Maj + T (Cmd + Maj + T sous macOS).
  3. Dans la fenêtre pop-up qui s'affiche, cliquez sur Create New Test (Créer un test).
  4. Dans la boîte de dialogue Create New Test (Créer un test), sélectionnez JUnit4, modifiez les champs et les méthodes à générer, puis cliquez sur OK.
  5. Dans la boîte de dialogue Choose Destination Directory (Sélectionner un répertoire de destination), cliquez sur l'ensemble de sources correspondant au type de test que vous souhaitez créer : androidTest pour un test d'instrumentation ou test pour un test unitaire local. Ensuite, cliquez sur OK.

Vous pouvez également créer un fichier de test générique dans la source de test appropriée, comme suit :

  1. À gauche, dans la fenêtre Projet, cliquez sur le menu déroulant et sélectionnez l'affichage Android.
  2. Effectuez un clic droit sur le répertoire java, puis sélectionnez New > Java Class (Nouveau > Classe Java) ou New > Kotlin Class/File (Nouveau > Classe/Fichier Kotlin). Vous pouvez également sélectionner le répertoire java et utiliser le raccourci Ctrl + N (Cmd + N sous macOS).
  3. Dans la boîte de dialogue Choose Destination Directory (Sélectionner un répertoire de destination), cliquez sur l'ensemble de sources correspondant au type de test que vous souhaitez créer : androidTest pour un test d'instrumentation ou test pour un test unitaire local. Ensuite, cliquez sur OK.
  4. Attribuez un nom au fichier, puis cliquez sur OK.

Si votre application ne se compile pas après avoir ajouté un test, assurez-vous d'avoir configuré les dépendances appropriées pour les bibliothèques de test. Consultez les sections Créer des tests locaux et Créer des tests d'instrumentation pour identifier les dépendances adaptées.

Exécuter des tests

Avant d'exécuter des tests, assurez-vous que votre projet est entièrement synchronisé avec Gradle en cliquant sur Sync Project (Synchroniser le projet) dans la barre d'outils. Vous pouvez exécuter des tests avec différents niveaux de précision :

  • Pour exécuter tous les tests dans un répertoire ou un fichier, ouvrez la fenêtre du projet et effectuez l'une des opérations suivantes :

    • Effectuez un clic droit sur un répertoire ou un fichier, puis cliquez sur Run (Exécuter) .
    • Sélectionnez le répertoire ou le fichier et utilisez le raccourci Ctrl + Maj + R.
  • Pour exécuter tous les tests d'une classe ou d'une méthode spécifique, ouvrez le fichier de test dans l'éditeur de code et effectuez l'une des opérations suivantes :

    • Appuyez sur l'icône Run test (Exécuter le test) dans la marge.
    • Effectuez un clic droit sur la classe ou la méthode de test, puis cliquez sur Run (Exécuter) .
    • Sélectionnez la classe ou la méthode de test, puis utilisez le raccourci Ctrl + Maj + R.

Vos tests d'instrumentation seront exécutés sur un appareil physique ou un émulateur. Pour en savoir plus sur la configuration des appareils physiques, consultez la section Exécuter des applications sur un appareil. Pour en savoir plus sur la configuration d'émulateurs, consultez Exécuter des applications sur Android Emulator.

Configurer l'exécution du test

Par défaut, vos tests sont exécutés en suivant la configuration par défaut d'Android Studio. Si vous devez modifier certains paramètres d'exécution, tels que l'exécuteur d'instrumentation et les options de déploiement, vous pouvez modifier la configuration d'exécution dans la boîte de dialogue Run/Debug Configurations (Configurations d'exécution/de débogage) : cliquez sur Run > Edit Configurations (Exécuter > Modifier les configurations).

Exécuteur de test Gradle unifié

Le plug-in Android Gradle 7.1.0 et Android Studio Bumblebee et versions ultérieures utilisent la propre implémentation de Gradle de l'exécuteur de test d'instrumentation Android pour exécuter des tests d'instrumentation. En utilisant le même exécuteur de test, les résultats sont susceptibles d'être cohérents, que vous exécutiez à l'aide d'AGP à partir de la ligne de commande, comme sur un serveur d'intégration continue, ou à partir d'Android Studio.

Figure 3 : L'exécuteur de test Gradle unifié.

Les versions précédentes d'Android Studio utilisent l'exécuteur de test d'instrumentation Android IntelliJ au lieu de l'exécuteur de test d'instrumentation Android de Gradle. Ainsi, si vous n'utilisez pas la dernière version d'Android Studio, selon que vous exécutez vos tests depuis Android Studio ou depuis la ligne de commande à l'aide du plug-in Gradle, vous pouvez voir des résultats de test différents, tels que des tests satisfaisants avec un exécuteur et négatifs avec un autre.

Figure 4 : Exécuteurs de test dédiés dans les anciennes versions d'Android Studio.

Si vous avez déjà enregistré des configurations de test d'instrumentation dans votre projet, elles utiliseront Gradle pour exécuter des tests sur votre appareil connecté. Vous pouvez créer une configuration de test d'instrumentation à l'aide de l'action de marge à côté de votre classe ou méthode de test, comme indiqué ci-dessous.

Figure 5 : Exécuter des tests à partir d'une action de marge.

Lorsque vous exécutez vos tests d'instrumentation, vous pouvez vérifier qu'Android Studio utilise l'exécuteur de test Gradle en inspectant le résultat du test dans le résultat de la tâche de matrice de test Gradle.

Exécuter des tests sur plusieurs appareils en parallèle

Les tests d'instrumentation s'exécutent par défaut sur un appareil physique ou un émulateur. Si vous souhaitez voir le comportement de vos tests sur un plus grand nombre d'appareils, vous pouvez en sélectionner d'autres en procédant comme suit :

  1. Avant d'exécuter vos tests, ouvrez le menu déroulant des appareils cibles, puis sélectionnez Select Multiple Devices (Sélectionner plusieurs appareils).

    Figure 6 : Menu déroulant, "Select Multiple Devices" (Sélectionner plusieurs appareils)

  2. Sélectionnez les appareils souhaités, puis cliquez sur OK.

  3. Assurez-vous que le texte du menu déroulant de l'appareil cible indique bien Multiple Devices (Plusieurs appareils), puis cliquez sur Run (Exécuter) .

  4. La fenêtre de l'outil de matrice de test affiche les résultats des tests pour chaque configuration d'appareil sélectionnée.

    Figure 7 : Résultats des tests dans la fenêtre de la matrice de test.

  5. Vous pouvez cliquer sur un test spécifique pour inspecter le résultat dans le volet de sortie. Vous pouvez également trier les tests en cliquant sur les différentes colonnes.

Exécuter des tests avec Firebase Test Lab

Firebase Test Lab vous permet de tester votre application simultanément sur de nombreux appareils et configurations d'appareil Android courants (différentes combinaisons de paramètres régionaux, d'orientation, de taille d'écran et de version de plate-forme). Ces tests s'exécutent sur des appareils physiques et virtuels dans des centres de données Google distants. Les résultats comprennent des journaux de test avec les détails des échecs de l'application.

Pour commencer à utiliser Firebase Test Lab, procédez comme suit :

  1. Créez un compte Gmail si vous n'en avez pas.
  2. Dans la console Firebase, cliquez sur Create New Project (Créer un projet).

Android Studio fournit des outils intégrés qui vous permettent de configurer le déploiement de vos tests sur Firebase Test Lab. Après avoir créé un projet Firebase, vous pouvez créer une configuration de test, puis exécuter vos tests :

  1. Dans le menu principal, cliquez sur Run > Edit Configurations (Exécuter > Modifier les configurations).
  2. Cliquez sur Add New Configuration (Ajouter une configuration) , puis sélectionnez Android Instrumented Tests (Tests d'instrumentation Android).
  3. Saisissez ou sélectionnez les détails de votre test, par exemple le nom, le type de module, le type et la classe de test.
  4. Dans le menu déroulant Target (Cible), sous Deployment Target Options (Options de cible de déploiement), sélectionnez Firebase Test Lab Device Matrix (Matrice des appareils Firebase Test Lab).
  5. Si vous n'êtes pas connecté, cliquez sur Sign in with Google (Se connecter avec Google) et autorisez Android Studio à accéder à votre compte.
  6. À côté de Cloud Project (Projet Cloud), sélectionnez votre projet Firebase dans la liste.
  7. À côté de Matrix configuration (Configuration de la matrice), sélectionnez l'une des configurations par défaut dans la liste déroulante ou créez-en une en appuyant sur Open Dialog (Ouvrir la boîte de dialogue) . Vous pouvez sélectionner un ou plusieurs appareils, versions d'Android, paramètres régionaux et orientations d'écran pour tester votre application dans différents environnements. Firebase Test Lab testera votre application pour chaque combinaison de vos sélections puis génèrera les résultats.
  8. Cliquez sur OK dans la boîte de dialogue Run/Debug Configurations (Configurations d'exécution/de débogage) pour terminer.
  9. Exécutez vos tests en cliquant sur Run (Exécuter) .

Figure 8 : Créer une configuration de test pour Firebase Test Lab

Analyser les résultats des tests

Lorsque Firebase Test Lab a terminé d'exécuter vos tests, la fenêtre Run (Exécuter) s'ouvre pour afficher les résultats, comme illustré dans la figure 9. Vous devrez peut-être cliquer sur Show Passed (Afficher les tests réussis)  pour afficher tous vos tests exécutés.

Figure 9 : Résultats des tests d'instrumentation avec Firebase Test Lab.

Vous pouvez également analyser vos tests sur le Web en suivant le lien affiché au début du journal d'exécution de test dans la fenêtre Run (Exécuter).

Afficher la couverture de test

L'outil de couverture de test est disponible pour les tests unitaires locaux afin de suivre le pourcentage et les zones de votre code d'application couverts par vos tests unitaires. Utilisez cet outil pour déterminer si vous avez correctement testé les éléments, les classes, les méthodes et les lignes de code qui composent votre application.

Pour exécuter des tests avec couverture, suivez la même procédure que celle décrite dans la section Run tests (Exécuter des tests), mais au lieu de cliquer sur Run (Exécuter) , cliquez sur Run test-name with coverage (Exécuter [nom du test] avec couverture) . Dans la fenêtre Project (Projet), cette option peut être masquée derrière More Run/Debug (Autres exécutions/débogages). Vous pouvez également configurer les paramètres de couverture dans la boîte de dialogue Run/Debug Configurations (Configurations d'exécution/de débogage), sous l'onglet Code Coverage (Couverture de code).

Figure 10 : Pourcentages de couverture de code pour une application.

Afficher les résultats des tests

Lorsque vous exécutez un ou plusieurs tests à partir d'Android Studio, les résultats s'affichent dans la fenêtre Run (Exécuter). La figure 11 illustre une exécution de test ayant abouti.

Figure 11 : Les résultats des tests s'affichent dans la fenêtre d'exécution.

La fenêtre Run (Exécuter) affiche les tests dans une arborescence à gauche, ainsi que les résultats et messages de la suite de tests actuelle dans le volet de sortie à droite. Utilisez les barres d'outils, les menus contextuels et les icônes d'état pour gérer les résultats des tests, comme suit :

  1. Utilisez la barre d'outils d'exécution pour exécuter à nouveau le test en cours, l'arrêter, exécuter à nouveau des tests ayant échoué (si l'option n'est pas disponible, c'est car elle n'est utilisable que pour les tests unitaires), mettre la sortie en pause et vider les threads.
  2. Utilisez la barre d'outils de test pour filtrer et trier les résultats. Vous pouvez également développer ou réduire des nœuds, afficher la couverture de test, mais aussi importer ou exporter les résultats.
  3. Cliquez sur le menu contextuel pour suivre le test en cours, afficher les statistiques, faire défiler la page jusqu'à la trace de la pile, ouvrir le code source lors d'une exception, faire défiler automatiquement la page jusqu'à la source, puis sélectionner le premier test ayant échoué une fois l'exécution terminée.
  4. Les icônes d'état de test indiquent si un test présente une erreur, a été ignoré, a échoué, est en cours, a réussi, a été mis en veille, a été arrêté ou s'il n'a pas été exécuté.
  5. Dans l'arborescence, effectuez un clic droit sur une ligne pour afficher un menu contextuel vous permettant d'exécuter les tests en mode débogage, d'ouvrir le fichier du code source de test ou d'accéder à la ligne testée.

Analyser les échecs des tests

Lorsqu'un ou plusieurs de vos tests échouent, la fenêtre de résultats affiche un avertissement et le nombre d'échecs (par exemple, "Tests ayant échoué : 1") :

Figure 12 : Détails des tests ayant échoué dans le volet de sortie.

Dans l'arborescence de gauche, lorsque vous cliquez sur un test ayant échoué, le volet de sortie affiche les détails correspondants. Il indique la valeur attendue en regard de la valeur réelle pour vous permettre de les comparer. Le lien Click to see difference (Cliquez pour voir la différence) ouvre un affichage des différences où vous pouvez voir les résultats côte à côte.

En savoir plus

Cette page décrit la procédure de base à suivre lorsque vous créez et exécutez votre premier test avec Android Studio. Vous pouvez également choisir d'exécuter des tests en ligne de commande. Vous pouvez également consulter la documentation d'IntelliJ sur les tests. Pour en savoir plus sur la configuration des tests lors de la création d'une suite plus importante, consultez la page Configuration de test avancée.