63 votes

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

Quelle est la différence entre les modules maven junit-jupiter-api y junit-jupiter-engine ? Est-il nécessaire d'inclure les deux dépendances dans build.gradle ?

Dois-je fournir les deux dépendances ?

testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")
testCompile("org.junit.jupiter:junit-jupiter-api:${junitVersion}")

Ou bien une seule dépendance suffit-elle ?

testCompile("org.junit.jupiter:junit-jupiter-engine:${junitVersion}")

Et dois-je ajouter une dépendance sur junit-vintage-engine ?

0 votes

Amélioration mineure : La recommandation de l'équipe JUnit est d'utiliser testRuntime pour les deux moteurs.

60voto

Basil Bourque Points 8938

junit-jupiter artefact d'agrégateur

JUnit 5.4 fournit Une configuration Maven beaucoup plus simple si votre intention est d'écrire des tests JUnit 5. Il suffit de spécifier l'artefact d'agrégat nommé junit-jupiter .

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>

En tant qu'agrégat, cet artefact tire à son tour les trois artefacts suivants automatiquement, 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é sur le nouveau paradigme de Jupiter.

Les tests hérités

Si votre projet comporte des tests JUnit 3 ou 4 que vous souhaitez continuer à exécuter, ajoutez une autre dépendance pour l'option Moteur vintage JUnit , junit-vintage-engine . Véase tutoriel par IBM .

<!-- https://mvnrepository.com/artifact/org.junit.vintage/junit-vintage-engine -->
<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>5.8.2</version>
    <scope>test</scope>
</dependency>

1 votes

C'est la meilleure réponse, à mon avis.

52voto

glytching Points 23668

JUnit avant la version 5.4

En 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, requis uniquement au moment 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 plateforme JUnit.

Alors...

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

JUnit à partir de la version 5.4

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

4 votes

Vous n'avez pas besoin d'ajouter les deux comme jupiter-api est une dépendance transitive de jupiter-engine .

2 votes

Dans la version 5.5.1, je suis capable d'écrire et d'exécuter des tests junit avec le "junit-jupiter-api" seulement.

2 votes

@gaurav, oui, c'est couvert dans cette partie de ma réponse. Note : dans JUnit 5.4, ceci est simplifié, voir cette réponse pour plus de détails.

12voto

Kasun Points 335

Juste pour noter, junit-jupiter-api est inclus en tant que sous-dépendance dans junit-jupiter-engine Dépôt Maven. Vous n'aurez donc besoin que d'ajouter junit-jupiter-engine pour obtenir les deux. Je suis sûr que gradle est pareil. https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine/5.1.1

2 votes

Maintenant simplifié dans JUnit 5.4 et ultérieur pour simplement <artifactId>junit-jupiter</artifactId> .

3voto

hrzafer Points 427

La réponse la plus précise à vos questions se trouve dans junit-team/junit5-samples dépôt. Jetez un coup d'œ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 la suivante junit-jupiter .

0voto

Yoda Points 1044

Si vous voulez exécuter les tests à l'aide de Junit 5, vous n'aurez besoin que de l'option junit-jupiter-api . Si vous utilisez le junit-jupiter-engine avec, vos tests seront cassés et ne fonctionneront pas.

Je ne sais pas pourquoi il a été placé, mais, la réponse précédente informe que vous devrez utiliser les deux est incorrecte.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X