web-dev-qa-db-ja.com

java.lang.NoSuchMethodError:org.junit.platform.launcher.Launcher.execute

次の例の単体テストケースを実行しようとしています

class ExampleUnitTest {

    @Test
    fun addition_is_Correct() {
        assertEquals(4, (2 + 2).toLong())
    }

}

しかし、私は次の例外を受け取ります

Exception in thread "main" Java.lang.NoSuchMethodError: org.junit.platform.launcher.Launcher.execute(Lorg/junit/platform/launcher/LauncherDiscoveryRequest;)V
    at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.Java:61)
    at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.Java:51)
    at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.Java:242)
    at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.Java:70)
    at Sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at Sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.Java:62)
    at Sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.Java:43)
    at Java.lang.reflect.Method.invoke(Method.Java:498)
    at com.intellij.rt.execution.application.AppMainV2.main(AppMainV2.Java:131)

以下のようにJunitの依存関係のbuild.gradleファイルをすべて更新しましたが

testImplementation 'junit:junit:4.12'
testImplementation 'org.jetbrains.spek:spek-api:1.1.5'
testImplementation 'org.jetbrains.spek:spek-junit-platform-engine:1.1.5'
testImplementation 'org.junit.platform:junit-platform-launcher:1.0.0'
testImplementation 'org.junit.platform:junit-platform-runner:1.0.0'
testImplementation 'org.junit.vintage:junit-vintage-engine:4.12.3'
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.0.0'
testImplementation 'org.junit.jupiter:junit-jupiter-params:5.0.0'
testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.0.0'

これに対する解決策はありますか?

6
kokilayaa

私はVSCodeで同様のことを経験しており、自分の結果を共有したいと思いました。

私は_pom.xml_でテスト依存関係のミスマッシュを使用していました。これは_mvn dependency:tree_を実行して確認しました。特定の_junit-jupiter_依存関係を削除し、単に_org.junit.jupiter:junit-jupiter_を使用すると、すべてが再び機能します(VSCodeのテスト実行とコマンドラインの_mvn test_の両方)。

最終的に、私が_pom.xml_で持っている唯一のJupiter依存関係は次のとおりです。

_<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.6.0</version>
    <scope>test</scope>
</dependency>
_

ソース: https://github.com/junit-team/junit5/issues/177

1
Christian Nuss