java - 无法摆脱 JUnit Vintage 引擎

标签 java maven junit junit4 junit5

我目前正在将 JUnit 测试从版本 4 迁移到版本 5。

我已按照以下步骤操作:https://blog.jetbrains.com/idea/2020/08/migrating-from-junit-4-to-junit-5/ 所以基本上,我的类不再导入 JUnit4 库,例如 org.junit.Test。

但是,当我尝试从 POM 中删除 Junit Vintage Engine 并运行一些测试时,我收到此错误:

Internal Error occurred.
org.junit.platform.commons.JUnitException: TestEngine with ID 'junit-vintage' failed to discover tests
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:111)
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:85)
    at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:92)
    at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75)
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:69)
    at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:33)
    at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:230)
    at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:58)
Caused by: org.junit.platform.commons.JUnitException: Unsupported version of junit:junit: 4.11. Please upgrade to version 4.12 or later.
    at org.junit.vintage.engine.JUnit4VersionCheck.checkSupported(JUnit4VersionCheck.java:49)
    at org.junit.vintage.engine.JUnit4VersionCheck.checkSupported(JUnit4VersionCheck.java:35)
    at org.junit.vintage.engine.VintageTestEngine.discover(VintageTestEngine.java:62)
    at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:103)
    ... 7 more

Process finished with exit code -2

即使是最简单的测试也会发生这种情况:

import org.junit.jupiter.api.Test;

public class TestTest {

    @Test
    public void justToShowYou(){
        System.out.println("Just to show you");
    }

}

这是我的 POM 的摘录:

<properties>
    <selenium.version>4.0.0-beta-2</selenium.version>
    <webdrivermanager.version>RELEASE</webdrivermanager.version>
    <log4j-core.version>2.13.0</log4j-core.version>
    <junit-jupiter.version>5.7.0</junit-jupiter.version>
    <postgresql.version>42.2.12</postgresql.version>
    <sikulixapi.version>2.0.4</sikulixapi.version>
</properties>

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>10</source>
                <target>10</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>

    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>${selenium.version}</version>
        <scope>test</scope>
    </dependency>


    <dependency>
        <groupId>io.github.bonigarcia</groupId>
        <artifactId>webdrivermanager</artifactId>
        <version>${webdrivermanager.version}</version>
        <scope>test</scope>
    </dependency>

    <dependency>
        <groupId>org.apache.logging.log4j</groupId>
        <artifactId>log4j-core</artifactId>
        <version>${log4j-core.version}</version>
    </dependency>

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>

    <!--<dependency>
        <groupId>org.junit.vintage</groupId>
        <artifactId>junit-vintage-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>-->

    <dependency>
        <groupId>org.postgresql</groupId>
        <artifactId>postgresql</artifactId>
        <version>${postgresql.version}</version>
    </dependency>

    <dependency>
        <groupId>com.sikulix</groupId>
        <artifactId>sikulixapi</artifactId>
        <version>${sikulixapi.version}</version>
    </dependency>

    <dependency>
        <groupId>org.json</groupId>
        <artifactId>json</artifactId>
        <version>20201115</version>
    </dependency>

    <dependency>
        <groupId>pl.pragmatists</groupId>
        <artifactId>JUnitParams</artifactId>
        <version>1.0.4</version>
        <scope>test</scope>
    </dependency>

</dependencies>

你有什么线索吗?提前致谢

最佳答案

您的依赖项之一可能依赖于 junit-vintage-engine。然后您必须将其从该依赖关系中排除。

关于java - 无法摆脱 JUnit Vintage 引擎,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68719906/

相关文章:

java - 配置 Liberty Profile 以使用 H2 数据库

java - 如何使用gradle运行主文件?

Maven 3 : deploying an artifact using SCP

maven - Android Studio - 找不到 intellij-core.jar

java - gradle with Java : When does . 在使用 gradle with Java 时创建 m2 文件夹

java - 模拟 RxJava 异步 http 调用

java - Apache POI - 文本长度限制为 8 或 10

Java 执行 For 循环但也使用迭代器进行链表 ( "For, While") 循环?

java - 如何在不运行静态方法中的代码的情况下测试静态方法

junit - 出现错误 "cucumber.runtime.CucumberException: Couldn' t 加载插件类 : com. cucumber.listener.ExtentCucumberFormatter。”