Bonjour ! Dans la leçon précédente, nous avons exploré en détail le "pourquoi" des tests unitaires, en découvrant leur rôle de filet de sécurité, d'outil d'amélioration du design et de documentation vivante. Vous êtes maintenant convaincu de leur importance capitale dans le développement logiciel professionnel.
Il est temps de passer de la théorie à la pratique. Savoir pourquoi on teste est une chose, mais savoir comment mettre en place l'environnement pour le faire en est une autre. Dans cette leçon, nous allons nous attaquer à cette étape fondamentale. L'objectif est de configurer JUnit 5, le framework de test standard en Java, au sein d'un projet Maven. Cela nous permettra de poser les rails sur lesquels nos futurs tests pourront circuler.
1. La Structure d'un Projet Prêt pour les Tests
Avant d'ajouter JUnit, il est essentiel de comprendre comment un projet Maven standard est structuré pour accueillir des tests. Vous vous souvenez de la structure de base que nous avons vue au début du cours :
src/main/java: Ce répertoire contient le code de votre application, celui qui sera compilé et livré au client.pom.xml: Le fichier de configuration de Maven, où l'on déclare les dépendances et la manière de construire le projet.
Pour les tests, Maven introduit une convention très importante : un répertoire parallèle dédié exclusivement au code de test.
src/test/java: Ce répertoire contiendra toutes nos classes de test. Le code qui s'y trouve n'est utilisé que pendant la phase de développement et de test ; il ne sera jamais inclus dans l'application finale.
Cette séparation est une bonne pratique fondamentale : elle isole clairement le code de production du code de test.
2. Ajouter JUnit 5 comme Dépendance Maven
JUnit n'est pas inclus par défaut dans Java. C'est une bibliothèque externe, ou "dépendance", que nous devons demander à Maven de télécharger et d'intégrer à notre projet. Pour ce faire, nous allons modifier notre fichier pom.xml.
La vidéo suivante vous montrera comment créer un projet Maven simple et y ajouter la dépendance JUnit 5 directement depuis IntelliJ IDEA.
Apprendre le Java #21 Les Tests Unitaire - JUnit5
Cette vidéo de Graven - Développement vous guide dans la création d'un projet et l'ajout de JUnit, qui est une dépendance externe gérée par Maven.
Commencez par regarder la création du projet Maven. Ensuite, concentrez-vous sur la partie cruciale : l'ajout de la dépendance. Observez bien comment il utilise les outils d'IntelliJ pour rechercher et ajouter org.junit.jupiter.
Comme vous l'avez vu, l'ajout d'une dépendance se fait dans la balise <dependencies> du pom.xml. Pour JUnit 5, la dépendance principale ressemble à ceci :
<dependencies>
<!-- Autres dépendances -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.10.2</version> <!-- La version peut varier -->
<scope>test</scope>
</dependency>
<!-- Autres dépendances -->
</dependencies>
Analysons les balises importantes :
<groupId>,<artifactId>,<version>: Ce sont les "coordonnées" uniques de la bibliothèque dans le référentiel Maven.<scope>test</scope>: C'est un élément crucial. Il indique à Maven que cette dépendance n'est nécessaire que pour compiler et exécuter le code qui se trouve danssrc/test/java. Grâce à cette instruction, la bibliothèque JUnit ne polluera pas votre application finale (le fichier.jar), la gardant ainsi légère et propre.
Après avoir ajouté cette dépendance à votre pom.xml, IntelliJ IDEA vous montrera une petite icône Maven pour vous inviter à synchroniser les changements. C'est une étape indispensable pour que l'IDE télécharge la bibliothèque.

3. Le Plugin Maven Surefire : L'Exécuteur de Tests
Avoir la bibliothèque JUnit, c'est bien, mais il faut aussi un outil pour que Maven puisse découvrir et exécuter nos tests. Ce rôle est dévolu au plugin Maven Surefire.
Dans la plupart des projets modernes créés à partir d'un archétype standard, Surefire est déjà inclus et configuré par défaut. Cependant, il est important que vous sachiez qu'il existe et à quoi il sert. Il se configure dans la section <build><plugins> de votre pom.xml.
Une configuration typique ressemble à ceci :
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.2.5</version> <!-- La version peut varier -->
</plugin>
</plugins>
</build>
Le plugin Surefire est intelligent : par convention, il va automatiquement chercher dans src/test/java toutes les classes dont le nom se termine par Test, Tests ou commence par Test, et y exécuter les méthodes annotées avec @Test. C'est une convention que nous suivrons scrupuleusement.
4. Attention aux Versions : JUnit 4 vs. JUnit 5
Le monde Java a une longue histoire, et vous serez peut-être amené à travailler sur des projets plus anciens qui utilisent encore JUnit 4. JUnit 5 (surnommé "Jupiter") est une réécriture moderne, mais il n'est pas rétrocompatible avec JUnit 4.
La principale source de confusion pour les débutants est l'utilisation des bonnes annotations.
TUTO Java : Mise en œuvre de tests unitaires avec JUnit 5
Cette vidéo de Dominique Liard, bien qu'utilisant Eclipse, explique un point technique universel et très important : la différence d'import entre les versions de JUnit.
Regardez attentivement le passage de l'import de l'annotation. L'auteur insiste sur le fait qu'il faut choisir le bon package. Pour JUnit 5, l'annotation @Test doit toujours provenir de org.junit.jupiter.api.Test. Si vous importez par erreur org.junit.Test, vos tests ne fonctionneront pas comme prévu.
Retenez bien cette règle d'or :
- JUnit 5 :
import org.junit.jupiter.api.Test; - JUnit 4 :
import org.junit.Test;
Dans ce cours, nous utiliserons exclusivement JUnit 5.
5. Mise en Pratique : Préparons notre projet
Maintenant, mettons tout cela en pratique. Nous allons créer un projet de A à Z et le configurer pour les tests.
Exercice :
- Ouvrez IntelliJ IDEA et créez un nouveau projet Maven.
- Donnez-lui un nom, par exemple
junit-setup-exercice. - Une fois le projet créé, ouvrez le fichier
pom.xml. - Dans la section
<dependencies>, ajoutez la dépendancejunit-jupitercomme vu ci-dessus. Assurez-vous d'inclure<scope>test</scope>. - Dans une section
<build><plugins>, ajoutez le pluginmaven-surefire-plugin. - Rechargez votre projet Maven en cliquant sur l'icône correspondante.
- Créez une nouvelle classe Java simple dans
src/main/java/com/example/, nommez-laCalculator. Vous pouvez la laisser vide pour l'instant. - Cliquez sur le nom de la classe
Calculator, puis utilisez le raccourci d'IntelliJ (Alt + Entrée sur Windows/Linux, ⌥ + Entrée sur Mac) et sélectionnez "Create Test". - IntelliJ vous proposera de créer la classe
CalculatorTestdans le bon répertoire (src/test/java/...). Acceptez simplement. - Ouvrez un terminal dans IntelliJ et lancez la commande
mvn clean test.
Si tout est bien configuré, Maven devrait compiler votre projet, trouver votre classe de test (même si elle est vide) et afficher un message BUILD SUCCESS sans erreur. Vous avez réussi !
Pour une référence complète, vous pouvez consulter cet exemple de pom.xml.
Framework de Test JUnit 5 - Elysia Tools
Cette page du site elysiatools.com fournit un exemple complet et professionnel de fichier pom.xml pour un projet utilisant JUnit 5.
Parcourez le fichier pom.xml présenté. Repérez la section <properties> où les versions sont définies (une bonne pratique), la dépendance junit-jupiter dans <dependencies>, et la configuration du maven-surefire-plugin dans <plugins>. Ne vous souciez pas des autres dépendances comme Mockito pour le moment, nous y reviendrons plus tard.
Conclusion
Félicitations ! Vous avez franchi une étape technique essentielle pour tout développeur Java. Configurer un projet pour les tests peut sembler fastidieux au début, mais cela devient rapidement une seconde nature. C'est le fondement sur lequel repose toute stratégie de test robuste.
Les points clés à retenir de cette leçon sont :
- Les projets Maven séparent le code source (
src/main/java) du code de test (src/test/java). - JUnit 5 est ajouté à un projet via une dépendance dans le
pom.xml. - La portée
<scope>test</scope>est cruciale pour s'assurer que les bibliothèques de test ne sont pas incluses dans le livrable final. - Le plugin Maven Surefire est responsable de la découverte et de l'exécution des tests.
- Il faut être vigilant à utiliser les bons
importpour la version de JUnit utilisée (toujoursorg.junit.jupiter.apipour nous).
Maintenant que notre environnement est prêt, nous sommes en position idéale pour commencer à écrire de vrais tests. Dans la prochaine leçon, nous allons créer notre première classe de test, découvrir les annotations de base de JUnit 5 et apprendre à utiliser les assertions pour vérifier le comportement de notre code.