从 Junit 4 迁移到 Junit 5 - 测试用例被跳过
Migration from Junit 4 to Junit 5 - Test case are getting skipped
我已将我的 junit 4 代码迁移到具有以下版本依赖项的 junit 5。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>1.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>2.22.0</version>
<scope>test</scope>
</dependency>
我的一个脚本使用命令
mvn -B verify -DforkCount=1 -DreuseForks=false
但我面临的问题是在迁移到 junit5 之后 运行宁它跳过了测试用例。
我正在使用maven-surefire-plugin - version 2.22.0.
虽然 运行ning 它只打印下面的行
测试 运行:0,失败:0,错误:0,跳过:0
我什至尝试了以下配置但没有帮助
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<properties>
<configurationParameters>
junit.jupiter.conditions.deactivate = *
junit.jupiter.extensions.autodetection.enabled = true
junit.jupiter.testinstance.lifecycle.default = per_class
junit.jupiter.execution.parallel.enabled = true
</configurationParameters>
</properties>
</configuration>
</plugin>
</plugins>
我的maven版本是3.3.9
并且没有运行测试用例。我面临这个奇怪问题的任何具体原因。之前使用 JUnit 4 的相同测试用例运行良好。
经过进一步分析,我发现命令 => mvn -B verify -DforkCount=1 -DreuseForks=false
没有 运行 测试用例并跳过它们。但是当我用 => mvn -B verify -DforkCount=1 -DreuseForks=true
替换相同的命令时,它开始工作。我知道属性 forkCount=1/reuseForks=true,这意味着 maven-surefire-plugin 创建一个新的 JVM 进程来执行一个 Maven 模块中的所有测试,但想知道为什么它不能使用 mvn -B verify -DforkCount=1 -DreuseForks=false
命令。 Junit5 迁移是否需要任何 maven 或 maven helper 版本升级?
这是 maven-surefire-plugin
中的 known bug,使用 JUnit 5.3[.1] 和使用分叉但不重用分叉的配置。
升级到 maven-surefire-plugin
2.22.1(上周末,2018 年 10 月 7 日发布)将解决问题。
我已将我的 junit 4 代码迁移到具有以下版本依赖项的 junit 5。
<dependency>
<groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-engine</artifactId>
<version>5.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-runner</artifactId>
<version>1.3.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-junit-jupiter</artifactId>
<version>2.22.0</version>
<scope>test</scope>
</dependency>
我的一个脚本使用命令
mvn -B verify -DforkCount=1 -DreuseForks=false
但我面临的问题是在迁移到 junit5 之后 运行宁它跳过了测试用例。
我正在使用maven-surefire-plugin - version 2.22.0.
虽然 运行ning 它只打印下面的行
测试 运行:0,失败:0,错误:0,跳过:0
我什至尝试了以下配置但没有帮助
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.22.0</version>
<configuration>
<properties>
<configurationParameters>
junit.jupiter.conditions.deactivate = *
junit.jupiter.extensions.autodetection.enabled = true
junit.jupiter.testinstance.lifecycle.default = per_class
junit.jupiter.execution.parallel.enabled = true
</configurationParameters>
</properties>
</configuration>
</plugin>
</plugins>
我的maven版本是3.3.9
并且没有运行测试用例。我面临这个奇怪问题的任何具体原因。之前使用 JUnit 4 的相同测试用例运行良好。
经过进一步分析,我发现命令 => mvn -B verify -DforkCount=1 -DreuseForks=false
没有 运行 测试用例并跳过它们。但是当我用 => mvn -B verify -DforkCount=1 -DreuseForks=true
替换相同的命令时,它开始工作。我知道属性 forkCount=1/reuseForks=true,这意味着 maven-surefire-plugin 创建一个新的 JVM 进程来执行一个 Maven 模块中的所有测试,但想知道为什么它不能使用 mvn -B verify -DforkCount=1 -DreuseForks=false
命令。 Junit5 迁移是否需要任何 maven 或 maven helper 版本升级?
这是 maven-surefire-plugin
中的 known bug,使用 JUnit 5.3[.1] 和使用分叉但不重用分叉的配置。
升级到 maven-surefire-plugin
2.22.1(上周末,2018 年 10 月 7 日发布)将解决问题。