Springboot + Maven + Junit5
Rédigé par gorki Aucun commentaireProblème :
Migration de springboot vers la 2.1.1 et Junit5... et plus rien ne marche, tests introuvables.
Après de multiples tests, ça marchait dans Intellij Idea, mais pas sous maven (MockBean retournait null....)
Solution :
J'ai fait beaucoup d'essais :
- ajouter junit-platform-commons comme vu ici
- j'ai suivi les guides de Mkyong Springboot + Maven + Junit5
- j'ai exclu Junit4 de surefire, ajouter plateform-commons à surefire...
Rien n'y faisait :
- soit pas de tests
- soit NullPointerException sur les MockBeans
- soit "Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.support.discovery.SelectorResolver"
Au final :
- Faire migrer les tests junit vers junit5
- Corriger les API
import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test;
- Remplacer le SpringRunner
@ExtendWith({SpringExtension.class})
- Corriger les API
- Simplifier le POM (vu ici : https://github.com/junit-team/junit5/issues/1773)
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>${test.junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId>
<version>${test.junit.version}</version>
<scope>test</scope>
</dependency>
<!--
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>${test.junit.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-commons</artifactId>
<version>${test.junit.platform}</version>
<scope>test</scope>
</dependency>-->
Et bien sur :
<!-- TEST -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</exclusion>
</exclusions>
</dependency>
Et enfin :
<!-- Testing -->
<plugin>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.2</version>
</plugin>