• 8 heures
  • Moyenne

Ce cours est visible gratuitement en ligne.

course.header.alt.is_video

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 20/12/2021

Lancez votre premier test

Comme nous l'avons vu dans le précédent chapitre, l'approche TDD présente certains avantages : moins de code à écrire, une application plus fiable. Dans ce chapitre, nous allons créer une nouvelle application pour mettre en œuvre cette approche. Cette application s'appelle CoinCoinTracker. Elle permet de gérer un porte-monnaie virtuel. Rien de farfelu, juste quelques grands principes permettant d’illustrer l'approche TDD et l'écriture de tests unitaires locaux !

Créez l'application

Ouvrez votre IDE favori (c'est-à-dire Android Studio), puis créez une nouvelle application :

  • Nom : CoinCoinTracker.

  • Format : Téléphone ou Tablette.

  • Activité principale : Empty Activity, nommée MainActivity.

Lorsque vous créez un nouveau projet, Android Studio crée automatiquement l'arborescence de test correspondante. C'est-à-dire qu'il vous crée un répertoire androidTest et un répertoire test, situés dans le répertoire app/src. C'est dans ce même répertoire que vous trouverez le répertoire main, qui contient les sources de votre projet.

La capture d'écran ci-dessous représente l'arborescence Android et les principaux répertoires d'un projet Android :

Capture d'écran illustrant l'arborescence de test de votre projet CoinCoinTracker. Les deux répertoires test et androidTest sont situés sous MainActivity.
L’arborescence de test de votre projet avec les deux répertoires test et androidTest

Pour mieux comprendre l'arborescence réelle, choisissez la vue Project et déroulez l'arborescence. Vous y trouverez les deux répertoires androidTest et test :

Les 2 répertoires androidTest et test en vue Projet
Les 2 répertoires androidTest et test en vue Projet

Le répertoire androidTest va contenir l'ensemble des tests instrumentalisés. Ce sont des tests d'intégration et d'interface qui ont besoin d'Android pour fonctionner. Ils seront donc plus longs à se lancer, mais seront plus proches de la réalité.

Le répertoire test va contenir l'ensemble des tests unitaires locaux. C'est-à-dire qu'ils peuvent être exécutés directement au sein d'Android Studio, sans avoir besoin de lancer l'émulateur ou de brancher un équipement réel. L'exécution sera donc très rapide. Ces tests seront utilisés pour valider le modèle de CoinCoinTracker.

Utilisez un framework de test

Avec Android Studio, les tests unitaires sont exécutés en utilisant le framework JUnit 4. Ce framework est couramment utilisé par la communauté des développeurs Java.

Un test unitaire correspond à une classe Java, dont chaque méthode correspond à un test. Vous êtes libre d'avoir autant de classes et de méthodes que vous souhaitez. L'idéal étant d'avoir une classe par composant, puis une méthode par fonctionnalité.

La librairie JUnit est chargée grâce à Gradle, le système permettant de compiler votre application. Pour vous en assurer, affichez l'arborescence du projet en utilisant la vue Android. Ensuite, déroulez la section Gradle Scripts. Puis ouvrez le fichier build.gradle (Module: app). En bas du fichier, vous devriez voir apparaître un bloc de ce type :

dependencies {
   implementation 'androidx.appcompat:appcompat:1.3.1'
   implementation 'com.google.android.material:material:1.4.0'
                                                   implementation 
'androidx.constraintlayout:constraintlayout:2.1.1'
   testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
                                     androidTestImplementation 
'androidx.test.espresso:espresso-core:3.4.0'
}

C'est la cinquième ligne qui nous intéresse : elle permet de préciser que le framework JUnit version 4.13.2 est téléchargé puis mis à disposition lorsque les tests unitaires locaux sont exécutés (directive testCompile).

Lancez un test

Par défaut, Android Studio crée un test factice lorsque vous créez un nouveau projet. Nous allons commencer par lancer ce test pour vous familiariser avec la démarche.

Vous avez le choix entre différents niveaux de lancement :

  • lancer tous les tests unitaires d'un coup ;

  • lancer tous les tests d'une classe de test donnée ;

  • lancer un test précis (c'est-à-dire une méthode précise d'une classe de test).

Les 3 méthodes de lancement de votre test sont entourées en vert et indiquées par un chiffre : 1 : méthode 1 dans le volet de droite 2 : méthode 2 dans le volet de droite 3 : méthode 3 dans le volet de gauche
Les 3 méthodes de lancement de votre test

En vous référant à l'image ci-dessus, les trois méthodes de lancement possibles sont :

  1. En faisant un clic droit sur le paquetage, puis en sélectionnant Run Tests in 'nom.du.paquetage...'.

  2. En faisant un clic droit sur une classe, puis en sélectionnant Run 'NomDeLaClasse'.

  3. En faisant un clic gauche sur le petit symbole au niveau d'une méthode de classe de test, puis Run 'NomDeLaMéthode'.

Une fois le ou les tests lancés, une nouvelle fenêtre apparaît en bas d'Android Studio, avec le résultat d'exécution :

Capture d'écran : en bas de l'interface s'affiche l'onglet Run avec une fenêtre intitulée
Une fenêtre s’ouvre avec le résultat d'exécution

Le jour où vous aurez de nombreux tests, et si un test échoue, vous pourrez le relancer directement depuis cet écran en faisant un clic droit sur le test, puis Run 'NomDeLaMéthode'.

En résumé

  • Les répertoires de tests sont générés automatiquement sur Android.

  • Utilisez le framework JUnit 4 pour réaliser les tests.

  • Lorsque vous écrivez des tests, la convention est de créer une classe par composant et une méthode par fonctionnalité à tester.

  • Dans Android Studio, vous avez la possibilité de lancer et voir le résultat de vos tests.

Vous avez lancé votre premier test : bravo ! Passez au chapitre suivant pour découvrir comment écrire les premiers tests unitaires.

Exemple de certificat de réussite
Exemple de certificat de réussite