Tester un code avec dépendances.
Dans cet exercice, nous allons réaliser des tests JUnit d'un composant qui possède différentes dépendances.
Contenu de l'exercice
Cloner ou télécharger le dépôt GIT disponible ici : GIT
Importer le projet junit-exercise-dependencies
Objectifs de l'exercice
Le projet contient une classe SchoolGrades
qu'il convient de tester.
Etapes :
Explications du programme
Le programme consiste en un petit module qui permet d'ajouter des notes à des élèves pour un examen appelé "BAC".
Ce module peut notamment calculer la moyenne de la classe. Et c'est cette fonction que nous souhaitons tester.
L'inconvénient c'est que ce code a été développé et intégré directement dans la classe SchoolGrades
qui utilise différentes dépendances.
Le challenge est important car il va avoir plusieurs défis à resoudre.
Créer la classe de test
En fonction de votre IDE, vous pouvez créer directement une classe de test en cliquant sur la classe SchoolGrades
, faire ALT+ENTER dessus et sélectionner "Create Test"
Sinon, vous pouvez créer une classe, lui donner un nom comme SchoolGradesTest
.
Préparer le test
Pour préparer le test, il convient d'initialiser la classe SchoolGrades
afin de pouvoir l'utiliser.
La difficulté repose sur le fait que la classe SchoolGrades dépend de deux autres composants :
- la partie authentication
- la partie gestion des utilisateurs
Le défi de la partie authentication
La partie authentification dépend d'un service REST dont nous n'avons pas l'accès. De plus ce service est utilisé partout dans les classes et génère des exceptions assez ennuyeuses.
Imposez un refactoring aux classes pour permettre de créer un test double de AuthenticationService.
Le défi de la partie gestion des étudiants
La partie gestion des utilisateurs peut démarrer de manière autonome même si l'obtention des données est très lente.
Est-ce que vous souhaitez utiliser l'environnement de production qui est lent ? Ou pouvez-vous trouver une autre méthode pour tester la méthode ?
Etude de la méthode
Déterminer les tests nécessaires pour vérifier l'exigence "le module SchoolGrades calcule la moyenne de la classe".
Implémenter vos tests
Créer vos tests pour vérifier l'exigence "le module SchoolGrades calcule la moyenne de la classe".