web-dev-qa-db-fra.com

Différence entre junit-jupiter-api et junit-jupiter-engine

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?

24
fbokovikov

JUnit avant la version 5.4

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 ...

  • Vous avez besoin des deux junit-jupiter-api et junit-jupiter-engine pour écrire et exécuter des tests JUnit5
  • Tu a juste besoins junit-vintage-engine si (a) vous exécutez avec JUnit5 et (b) vos cas de test utilisent des constructions/annotations/règles JUnit4, etc.

JUnit à partir de la version 5.4

Dans JUnit 5.4, cela est simplifié, voir cette réponse pour plus de détails.

24
glytching

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

9
Kasun

junit-jupiter artefact

JUnit 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é:

Dans votre projet, vous vous retrouverez également avec:

  • junit-platform-commons-1.4.0.jar
  • junit-platform-engine-1.4.0.jar

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.

Tests hérités

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>
8
Basil Bourque

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.

1
hrzafer