使用JUnit5时,出现警告:“ ClassNotFoundException:org.junit.platform.engine.support.filter.ExclusionReasonConsumingFilter”

时间:2018-09-21 08:11:23

标签: java junit junit5

我正在尝试使用JUnit5。
首先,我向maven项目添加了依赖项:

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.3.0</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>1.3.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

然后,我创建了一个测试:

package com.example.multicurrency;

import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;

class JunitTests {
    @Test
    void testAssertTrue() {
        assertTrue(false);
    }
}

然后,我运行测试。以下是我所得到的:

org.junit.platform.launcher.core.DefaultLauncher handleThrowable
warning: TestEngine with ID 'junit-vintage' failed to discover tests
java.lang.NoClassDefFoundError: org/junit/platform/engine/support/filter/ExclusionReasonConsumingFilter
Caused by: java.lang.ClassNotFoundException: org.junit.platform.engine.support.filter.ExclusionReasonConsumingFilter

org.opentest4j.AssertionFailedError: 
Expected :<true> 
Actual   :<false>

结果符合我的预期。但是警告使我困惑。警告是什么意思?

2 个答案:

答案 0 :(得分:3)

现在与Surefire 5.2.0一起使用junit-jupiter-engine的{​​{1}}版本。

2.22.0

似乎您被https://issues.apache.org/jira/browse/SUREFIRE-1564所震惊,它描述了一个已知问题,Surefire <dependencies> <dependency> <groupId>org.junit.jupiter</groupId> <artifactId>junit-jupiter-engine</artifactId> <version>5.2.0</version> <scope>test</scope> </dependency> </dependencies> 内部保留了所有2.22.0工件的版本1.2.0

答案 1 :(得分:0)

我通过将intellij的想法从2017.2更新为2018.2.4解决了这个问题。 但是我还没有弄清楚是什么原因造成的,以及它为什么得以解决。

感谢您的友好回答和评论。