Mise en place de tests Java avec JUnit


JUnit est l’équivalent Java de NUnit, présenté précédemment dans notre série d’articles. Il s’agit d’un framework de tests unitaires simple à utiliser et disposant d’outils performants pour écrire des tests. Nous nous pencherons ici sur JUnit5. Cette version est séparée en 3 modules :
  • JUnit Platform : plateforme permettant de filtrer et lancer les tests que l’on souhaite exécuter;
  • JUnit Jupiter : module contenant la librairie permettant l’écriture des tests;
  • JUnit Vintage : il permet de lancer les tests basés sur des versions précédentes de JUnit.

Installation du framework

Afin d’utiliser JUnit, nous utiliserons ici un projet Maven (vous pouvez utiliser la création d’archétype dans Maven pour créer ce projet test) que nous créerons avec Visual Studio Code (un éditeur de code permettant le développement en Java). Nous choisissons Visual Studio Code plutôt qu’un autre IDE comme Eclipse de par sa rapidité et les multiples extensions disponibles qui permettent de personnaliser l’expérience utilisateur et de faciliter certains aspects du développement comme l’exécution des tests que nous verrons ici.

Procédure de création du projet

Tests Java avec JUnit
  • Choisissez le type de projet Maven, puis l’archétype « maven-archetype-quickstart », vous pouvez laisser le reste des valeurs par défaut ;
  • Vous devriez arriver à un projet contenant ces dossiers/fichiers. La classe de test AppTest.java est bien séparé de la classe App.java contenant le code métier ;
Tests Java avec JUnit
  • Ensuite, allez dans le fichier pom.xml et remplacez le nœud « dependencies » par l’image ci-dessous :
Tests Java avec JUnit
  • La création du projet est terminée, il ne reste qu’à développer les tests !

Création d’un test

La procédure de création d’un test étant fortement similaire à celle présentée dans l’article sur NUnit, nous verrons brièvement leur création avant à l’exécution des tests. Afin de créer un test, il nous faut d’abord une fonction à tester, ici une simple fonction d’addition de 2 nombres dans la classe App.java :
Tests Java avec JUnit
Puis, nous créons le cas de test permettant de vérifier le bon fonctionnement dans la classe AppTest.java.
Tests Java avec JUnit
Ici, nous vérifions que l’addition fonctionne bien.

Exécution d’un test

Notez le petit logo de validation sur la capture d’écran ci-dessus, il est en effet possible d’effectuer des tests à la volée dans Visual Studio Code afin de tester rapidement chaque test. Il est cependant aussi possible de lancer tous les tests manuellement dans Visual Studio Code via l’onglet « Testing ».
Tests Java avec JUnit
De nombreux plugins existent afin de tester différents frameworks en utilisant JUnit, disponibles sur https://mvnrepository.com/.

Automatisation des tests et création des rapports

Une fois les tests créés, nous souhaitons maintenant qu’ils se lancent automatiquement afin d’éviter toute régression. Pour cela, nous allons utiliser le plugin « maven-surefire-plugin », qui permet le lancement des tests unitaires lors de la phase de test du cycle de vie du build Maven. Pour cela vérifiez que votre fichier pom.xml comporte ce nœud dans le nœud « build » :
Tests Java avec JUnit
Ainsi, lors de la phase de test, les tests seront exécutés et un rapport sera généré.
Tests Java avec JUnit
Il est possible de générer des rapports de tests plus complets et esthétiques, notamment avec Cobertura (ci-dessous un exemple de rapport généré avec Cobertura). Cela permet aussi de savoir la couverture de code, c’est-à-dire le pourcentage de code source exécuté par les tests.
Tests Java avec JUnit

Conclusion

Nous avons vu la création de tests et leur exécution grâce à des plugins Maven. Il existe cependant de nombreux plugins afin de tester de multiples outils (tests unitaires sur une base de données, sur du Javascript, etc…).