问题描述
我有一个使用Spring Boot和Junit 5的简单应用程序:
I have a simple app using Spring Boot and Junit 5:
-
使用Spring Boot 2.1(例如2.1.8或2.1.12)时,我的单元测试会运行
When using Spring Boot 2.1 (e.g, 2.1.8 or 2.1.12), my unit tests runsmoothly
在使用Spring Boot 2.2(例如2.2.2.RELEASE或2.3.2.RELEASE)时,我的单元测试失败并显示错误消息
When using Spring Boot 2.2 (e.g., 2.2.2.RELEASE or 2.3.2.RELEASE) my unit tests fail with error message
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.22.2:test (default-test) on project XXX: There are test failures.
[ERROR]
[ERROR] Please refer to D:\Projets\workspace\XXX\target\surefire-reports for the individual test results.
[ERROR] Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
[ERROR] There was an error in the forked process
[ERROR] TestEngine with ID 'junit-vintage' failed to discover tests
[ERROR] org.apache.maven.surefire.booter.SurefireBooterForkException: There was an error in the forked process
[ERROR] TestEngine with ID 'junit-vintage' failed to discover tests
[ERROR] at org.apache.maven.plugin.surefire.booterclient.ForkStarter.fork(ForkStarter.java:656)
我正在使用Maven 3.6.1,JDK 1.8,JUnit 5.6.0和JUnit平台1.6.0.我从spring-boot-starter-test
中排除了对junit:junit
的依赖,因此在依赖树中没有JUnit 4构件.请注意,Spring Boot 2.2和2.3均使用maven-surefire-plugin
2.22.2,因此我的问题并非源于maven-surefire-plugin
的任何回归.
I am using Maven 3.6.1, JDK 1.8, JUnit 5.6.0 and JUnit platform 1.6.0. I exclude the dependency on junit:junit
from spring-boot-starter-test
, so that I have no JUnit 4 artifacts left in the dependency tree. Note that both Spring Boot 2.2 and 2.3 use maven-surefire-plugin
2.22.2, so my problem does not originate from any regression of the maven-surefire-plugin
.
为了让我的单元测试正常工作,我应该坚持使用Spring Boot 2.1 吗?
Should I stick to Spring Boot 2.1 in order to have my unit test working?
预先感谢您的帮助.
推荐答案
我发现了错误.对spring-boot-starter-test
的依赖性带来对junit-vintage-engine
的依赖性.后者必须排除在外:
I found the error. The dependency on spring-boot-starter-test
brings a dependency on junit-vintage-engine
. The latter must be excluded:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
这篇关于错误"ID为'junit-vintage'的TestEngine无法发现测试".使用Spring Boot 2.2的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!