web-dev-qa-db-ja.com

JUnit5を使用すると、「ClassNotFoundException:org.junit.platform.engine.support.filter.ExclusionReasonConsumingFilter」という警告が表示されました

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>

結果は私が期待したものでした。しかし、警告は私を混乱させました。警告はどういう意味ですか?

6
ayaya

現時点では、Surefire 5.2.0junit-jupiter-engineのバージョン2.22.0を使用してください。

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>5.2.0</version>
        <scope>test</scope>
    </dependency>
</dependencies>

https://issues.Apache.org/jira/browse/SUREFIRE-1564 に悩まされているようですが、Surefire 2.22.0すべての1.2.0アーティファクトについて、内部的にはバージョンjunit-platfrom-xyzのままです。

2
Sormuras

この問題を解決するには、2017.2から2018.2.4にIntellijアイデアを更新しました。しかし、私はそれを引き起こした原因とそれがなぜ解決したのか理解していません。

フレンドリーな回答とコメントをありがとう。

0
ayaya