从 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 日发布)将解决问题。