Im essayant d'obtenir un test junit simple en cours d'exécution avec maven mais il ne détecte aucun test. Où est-ce que je vais mal? Le répertoire du projet
Project -> src -> test-> Java -> MyTest.Java
Résultats :
Tests run: 0, Failures: 0, Errors: 0, Skipped: 0
pom.xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.Apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.Apache.org/POM/4.0.0 http://maven.Apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.buildproftest.ecs</groupId>
<artifactId>buildprofiletest</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<debug>false</debug>
<optimize>true</optimize>
<source>1.8</source>
<target>1.8</target>
</configuration>
</plugin>
</plugins>
</build>
</project>
Cas de test Junit
import org.junit.jupiter.api.Test;
public class MyTest {
@Test
public void printTest() {
System.out.println("Running JUNIT test");
}
}
La réponse est qu'il n'y a pas de cas de test à exécuter.
Merci pour votre perspicacité
Selon l'annotation (import org.junit.jupiter.api.Test
), vous essayez d'exécuter des tests JUnit 5 avec Maven. Selon la documentation , vous devez ajouter cette dépendance:
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
Votre version de Maven est livrée avec une version de maven-surefire-plugin
qui ne prend pas en charge JUnit 5. Vous pouvez mettre à jour votre Maven vers la dernière version. Vous pouvez également définir la version de maven-surefire-plugin
:
<plugin>
<groupId>org.Apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<!-- JUnit 5 requires Surefire version 2.22.0 or higher -->
<version>2.22.0</version>
</plugin>
Voir les junit5-échantillons pour cette information .
Voir l'artefact Maven Surefire Plugin dans un référentiel Maven. À la version 3.0.0-M3
en date du 2019-01.
junit-jupiter
- l'archétype le plus simpleLe Réponse de LaurentG semble être correct, mais un peu dépassé.
Depuis JUnit 5.4, vous pouvez remplacer ces multiples artefacts Maven :
junit
junit-jupiter-api
junit-jupiter-engine
… Avec un seul artefact:
Ce nouvel artefact est un agrégat d'autres artefacts, un wrapper pratique pour simplifier votre fichier POM.
<dependencies>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<!-- Provides everything you need to write JUnit 5 Jupiter tests. -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.5.0-M1</version>
<scope>test</scope>
</dependency>
</dependencies>
Cela vous donne tout ce dont vous avez besoin pour écrire et exécuter des tests JUnit 5 Jupiter.
Si vous avez d'anciens tests JUnit 3 ou JUnit 4 legacy que vous souhaitez continuer à exécuter, ajoutez une deuxième dépendance, junit-vintage-engine
.
<dependencies>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<!-- Provides everything you need to write JUnit 5 Jupiter tests. -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.5.0-M1</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
<!-- Enables any legacy JUnit 3 and JUnit 4 tests you may have. Not needed for JUnit 5 tests. -->
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.5.0-M1</version>
<scope>test</scope>
</dependency>
</dependencies>
Vous auriez également besoin du Surefire plugin comme indiqué dans cette autre réponse . Assurez-vous d'obtenir la dernière version, car Surefire a récemment subi d'importantes corrections/améliorations. Actuellement à la version 3.0.0-M3.