Quelle est la différence entre les modules maven junit-jupiter-api
et junit-jupiter-engine
? Est-il nécessaire d'inclure les deux dépendances dans build.gradle
?
Dois-je écrire les deux dépendances comme
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}")
ou
testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
est assez?
Et dois-je ajouter une dépendance à junit-vintage-engine
?
De les docs :
junit-jupiter-api
API JUnit Jupiter pour l'écriture de tests et d'extensions.
junit-jupiter-engine
Implémentation du moteur de test JUnit Jupiter, uniquement requise lors de l'exécution.
junit-vintage-engine
Implémentation du moteur de test JUnit Vintage qui permet d'exécuter des tests JUnit vintage, c'est-à-dire des tests écrits dans le style JUnit 3 ou JUnit 4, sur la nouvelle plate-forme JUnit.
Donc ...
junit-jupiter-api
et junit-jupiter-engine
pour écrire et exécuter des tests JUnit5junit-vintage-engine
si (a) vous exécutez avec JUnit5 et (b) vos cas de test utilisent des constructions/annotations/règles JUnit4, etc.Dans JUnit 5.4, cela est simplifié, voir cette réponse pour plus de détails.
Juste pour noter, junit-jupiter-api
est inclus comme sous-dépendance dans junit-jupiter-engine
Dépôt Maven. Vous n'aurez donc qu'à ajouter junit-jupiter-engine
pour obtenir les deux. Je suis sûr que Gradle est le même. https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine/5.1.1
junit-jupiter
artefactJUnit 5.4 fournit configuration Maven beaucoup plus simple si votre intention est d'écrire des tests JUnit 5. Spécifiez simplement l'artefact agrégé nommé junit-jupiter
.
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter</artifactId>
<version>5.4.2</version>
<scope>test</scope>
</dependency>
Cet artefact agrégé tire à son tour automatiquement les trois artefacts suivants, pour votre commodité:
junit-jupiter-api
(une dépendance de compilation)junit-jupiter-params
(une dépendance de compilation)junit-jupiter-engine
(une dépendance d'exécution)Dans votre projet, vous vous retrouverez également avec:
Ce qui précède est ce dont vous avez besoin pour écrire et exécuter des tests JUnit 5 basés sur le nouveau paradigme Jupiter.
Si votre projet contient des tests JUnit 3 ou 4 que vous souhaitez continuer à exécuter, ajoutez une autre dépendance pour le JUnit Vintage Engine, junit-vintage-engine
. Voir tutoriel d'IBM .
<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
<dependency>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
<version>5.4.2</version>
<scope>test</scope>
</dependency>
La réponse la plus précise à vos questions se trouve dans le référentiel junit-team/junit5-samples . Jetez un œil à junit5-jupiter-starter-gradle pour Gradle et junit5-jupiter-starter-maven pour maven.
Comme vous pouvez le voir dans les deux exemples, la seule dépendance requise est junit-jupiter
.