当前位置: 首页 > 知识库问答 >
问题:

从JUnit4到JUnit5的迁移-测试用例被跳过

劳宇
2023-03-14

我已经将我的JUnit4代码迁移到JUnit5,并使用以下版本依赖项。

 <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之后,运行它时跳过了TestCase。

我正在使用maven-surefire-plugin-version 2.22.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

并且不运行测试用例。我面临这个奇怪问题的任何具体原因。之前使用JUnit4的相同测试用例运行良好。

经过进一步分析,我发现命令=>mvn-b verify-dforkcount=1-dreuseforks=false不运行测试用例,并跳过它们。但是当我用=>mvn-b verify-dforkcount=1-dreuseforks=true替换相同的命令时,它就开始工作了。我理解properties forkcount=1/reuseforks=true,这意味着maven-surefire-plugin创建一个新的JVM进程来执行一个Maven模块中的所有测试,但我想知道为什么它不能使用mvn-b verify-dforkcount=1-dreuseforks=false命令。Junit5迁移是否需要任何maven或maven helper版本升级?

共有1个答案

暨修洁
2023-03-14

这是JUnit 5.3[.1]的maven-surefire-plugin中的一个已知错误,该配置使用分叉但不重用它们。

升级到maven-surefire-plugin2.22.1(上周末发布,2018年10月7日)将解决这个问题。

 类似资料:
  • null JUnit4中的示例 JUnit5中的示例

  • 我有一个工作环境,包括我不管理的bom和JUnit5测试,除非我从如果我从它们不会被maven surefire插件拾取。我阅读了许多部分,并在一个较小的项目中进行了测试,它的工作和拾取,我不知道该在这篇文章中包含什么,因此您有足够的信息来查看问题所在。此外,如果有人能解释我阅读的导入的幕后内容,JUnit 4和5都需要使用surefire即 与版本 我很感激。 注意到 < li >我的测试都在s

  • 我试图在JUnit5测试环境中使用JUnit4。事实上,我已经升级了我的pom来使用更高版本的MOckito和POwerMock。到目前为止,所有测试都基于JUnit4。我将平台和vintage依赖项添加到我的pom.xml中。 更早的pom。xml依赖关系

  • 在Maven项目中,我有一些现有的测试依赖于JUnit4。由于多种原因,我无法在JUnit5中迁移这些测试。 本质上,一些测试依赖于使用JUnit4运行程序的库,代码迁移可能需要时间。 我同样希望用JUnit5创建新的测试类,它现在发布并提供了新的有趣的特性。 如何做到这一点?

  • 在JUnit 4中,通过使用注释很容易跨一堆类测试不变量。关键是一组测试正在针对单个参数列表运行。 如何在JUnit 5中复制这一点,而不使用JUnit-vintage? 不适用于测试类。听起来可能是合适的,但该注释的目标也是一个方法。 此类 JUnit 4 测试的一个示例是: