Chapitre Les fonctionnalités avancées de JUnit
Tests Dynamiques avec JUnit 5 dans un projet Maven
Comprendre et mettre en pratique les tests dynamiques avec JUnit 5 dans le cadre d'un projet Maven.
Contenu de l'exercice
Comprendre et mettre en pratique les tests dynamiques avec JUnit 5 dans le cadre d'un projet Maven.
Objectifs de l'exercice
Le projet contient une classe Calculator
qu'il convient de tester.
Etapes :
Création du projet Maven :
Ouvrez votre terminal ou invite de commandes. Utilisez la commande suivante pour créer un nouveau projet Maven interactif :
mvn archetype:generate -DgroupId=com.example -DartifactId=monprojet -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
Structure du projet :
Allez dans le répertoire du projet nouvellement créé :
cd monprojet
Configuration du fichier pom.xml :
Ouvrez le fichier pom.xml avec votre éditeur de texte préféré.
Ajoutez la dépendance JUnit 5 dans la section
<dependencies>
<!-- ... autres dépendances ... -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
Installation des dépendances :
Retournez dans le terminal et exécutez la commande Maven pour télécharger les dépendances :
mvn clean install
Création de tests dynamiques :
Créez un nouveau fichier de test dans le répertoire src/test/java/com/example (assurez-vous que le package correspond à celui défini dans le fichier pom.xml). Créez une classe de test avec des méthodes de tests dynamiques :
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestsDynamiques {
@TestFactory
Stream<DynamicTest> multiplicationParDeux() {
return Stream.of(1, 2, 3, 4, 5)
.map(nombre ->
DynamicTest.dynamicTest("Test multiplication par 2 pour " + nombre, () ->
assertEquals(nombre * 2, nombre * 2)
)
);
}
}
Exécution des tests :
Utilisez la commande Maven pour exécuter les tests :
mvn test
### Optionel : lire depuis un fichier
Modifiez votre test pour lire les données depuis un fichier.
Création d'un fichier de données :
Créez un fichier donnees.txt dans le répertoire src/test/resources avec des données pour les tests :
1,2
3,6
5,10
Lecture du fichier et génération de tests dynamiques :
Créez une nouvelle classe de test dans le répertoire src/test/java/com/example qui lit les données du fichier et génère des tests dynamiques :
import org.junit.jupiter.api.DynamicTest;
import org.junit.jupiter.api.TestFactory;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.List;
import java.util.stream.Stream;
import static org.junit.jupiter.api.Assertions.assertEquals;
public class TestsDynamiquesDepuisFichier {
@TestFactory
Stream<DynamicTest> testsMultiplicationParDeux() throws Exception {
List<String> lignes = Files.readAllLines(Paths.get(getClass().getResource("/donnees.txt").toURI()));
return lignes.stream()
.map(ligne -> {
String[] valeurs = ligne.split(",");
int nombre = Integer.parseInt(valeurs[0]);
int resultatAttendu = Integer.parseInt(valeurs[1]);
return DynamicTest.dynamicTest("Test multiplication par 2 pour " + nombre, () ->
assertEquals(resultatAttendu, nombre * 2)
);
});
}
}
Résultats :
Vous devriez voir la sortie indiquant que les tests dynamiques ont été exécutés avec succès.