Même si j'utilise JUnit5 dans mon pom, le plugin maven Surefire est toujours par défaut JUnit4. Cela peut poser certains problèmes, notamment lors de l'utilisation des nouvelles fonctionnalités de JUnit5. Pour résoudre ce problème, nous pouvons demander au plugin Surefire d'utiliser JUnit5 comme exécuteur de test par défaut en configurant le fichier pom. Dans la balise build du fichier pom, nous devons ajouter une balise plugins et y configurer maven-surefire-plugin. Dans la configuration, nous devons spécifier testFrameworkProviderName comme org.junit.platform.surefire.provider.JUnitPlatformProvider. De cette façon, lorsque nous exécuterons la commande mvn test, le plugin Surefire utilisera JUnit5 pour exécuter les tests. Cette configuration garantit que nous pouvons exécuter des tests normalement tout en utilisant JUnit5.
J'ai lu cet article. C'est mon pompon parent :
<dependencymanagement> <dependencies> <dependency> <groupid>org.junit</groupid> <artifactid>junit-bom</artifactid> <version>5.10.1</version> <type>pom</type> <scope>import</scope> </dependency> ... <dependencies> <dependency> <groupid>org.junit.jupiter</groupid> <artifactid>junit-jupiter-engine</artifactid> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher --> <dependency> <groupid>org.junit.platform</groupid> <artifactid>junit-platform-launcher</artifactid> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-runner --> <dependency> <groupid>org.junit.platform</groupid> <artifactid>junit-platform-runner</artifactid> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-console-standalone --> <dependency> <groupid>org.junit.platform</groupid> <artifactid>junit-platform-console-standalone</artifactid> <version>1.10.1</version> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-commons --> <dependency> <groupid>org.junit.platform</groupid> <artifactid>junit-platform-commons</artifactid> <scope>test</scope> </dependency> <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-engine --> <dependency> <groupid>org.junit.platform</groupid> <artifactid>junit-platform-engine</artifactid> <scope>test</scope> </dependency> ... <plugin> <groupid>org.apache.maven.plugins</groupid> <artifactid>maven-surefire-plugin</artifactid> <version>3.2.1</version> <configuration> <argline>--enable-preview --add-modules jdk.incubator.vector</argline> </configuration> </plugin>
Quand je n'en ai pas junit
依赖项。当我运行 mvn install
dans mon sous-projet, je vois ceci :
[info] --- surefire:3.2.1:test (default-test) @ xxx --- [info] toolchain in maven-surefire-plugin: jdk[/library/java/jdk-21.0.1.jdk/contents/home] [info] using auto detected provider org.apache.maven.surefire.junit4.junit4provider [info] [info] ------------------------------------------------------- [info] t e s t s [info] ------------------------------------------------------- warning: using incubator modules: jdk.incubator.vector [info] [info] results: [info] [info] tests run: 0, failures: 0, errors: 0, skipped: 0 [info]
Pourquoi le fournisseur est-il automatiquement détecté org.apache.maven.surefire.junit4.junit4provider
? Il devrait utiliser Junit5 !
Quand je cours mvn dependency:tree
je vois ça :
[INFO] --- dependency:3.6.0:tree (default-cli) @ xxx --- [INFO] xxx:xxx:jar:1.0.0-SNAPSHOT [INFO] +- org.eclipse.collections:eclipse-collections:jar:11.1.0:compile [INFO] | \- org.eclipse.collections:eclipse-collections-api:jar:11.1.0:compile [INFO] +- org.slf4j:slf4j-api:jar:2.0.9:compile [INFO] +- com.google.guava:guava:jar:32.1.2-jre:compile [INFO] | +- com.google.guava:failureaccess:jar:1.0.1:compile [INFO] | +- com.google.guava:listenablefuture:jar:9999.0-empty-to-avoid-conflict-with-guava:compile [INFO] | +- com.google.code.findbugs:jsr305:jar:3.0.2:compile [INFO] | +- com.google.errorprone:error_prone_annotations:jar:2.18.0:compile [INFO] | \- com.google.j2objc:j2objc-annotations:jar:2.8:compile [INFO] +- org.assertj:assertj-core:jar:3.24.2:test [INFO] | \- net.bytebuddy:byte-buddy:jar:1.14.9:test [INFO] +- org.junit.jupiter:junit-jupiter-engine:jar:5.9.3:test [INFO] | +- org.junit.jupiter:junit-jupiter-api:jar:5.9.3:test [INFO] | \- org.apiguardian:apiguardian-api:jar:1.1.2:test [INFO] +- org.junit.platform:junit-platform-launcher:jar:1.9.3:test [INFO] +- org.junit.platform:junit-platform-runner:jar:1.9.3:test [INFO] | +- junit:junit:jar:4.13.2:test [INFO] | | \- org.hamcrest:hamcrest-core:jar:2.2:test [INFO] | | \- org.hamcrest:hamcrest:jar:2.2:test [INFO] | +- org.junit.platform:junit-platform-suite-api:jar:1.9.3:test [INFO] | \- org.junit.platform:junit-platform-suite-commons:jar:1.9.3:test [INFO] +- org.junit.platform:junit-platform-console-standalone:jar:1.10.1:test [INFO] +- org.junit.platform:junit-platform-commons:jar:1.9.3:test [INFO] +- org.junit.platform:junit-platform-engine:jar:1.9.3:test [INFO] | \- org.opentest4j:opentest4j:jar:1.2.0:test [INFO] \- org.checkerframework:checker-qual:jar:3.42.0:compile
C’est aussi bizarre parce que je suis en pom.xml
中没有使用版本 5.9.3
和 1.9.3
。我正在使用 junit-bom:5.10.1
.
Quelle est la raison et pourquoi maven ne fonctionne pas correctement pour une fois ?
C'est parce que :
[INFO] +- org.junit.platform:junit-platform-runner:jar:1.9.3:test [INFO] | +- junit:junit:jar:4.13.2:test
Dans l'arborescence des dépendances. La suppression de la dépendance de pom.xml
中对 junit-platform-runner
a résolu le problème.
Dans mon cas, c'est parce que j'ai également cité une référence transitive de spring-boot-dependency:3.1.5
在我的 dependencymanagement
中,它优先于 junit-bom:5.10.1
。 spring-boot-dependency:3.1.5
具有对 junit-bom:5.9.3
.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!