JUnit 5 schlägt mit java.lang.NoSuchMethodError fehl: org.junit.platform.launcher.Launcher.execute

Phänomen

Als ich versuchte, JUit 5 in Eclipse auszuführen, konnte ich es mit der folgenden Ausnahme nicht ausführen. Es wurden keine Tests mit dem Testläufer 'JUnit 5' gefunden. Er tauchte auf und die Tests konnten nicht ausgeführt werden.

java.lang.NoSuchMethodError: org.junit.platform.launcher.Launcher.execute(Lorg/junit/platform/launcher/TestPlan;[Lorg/junit/platform/launcher/TestExecutionListener;)V
	at org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:89)
	at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:541)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:763)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:463)
	at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:209)

Die Abhängigkeiten sehen so aus.

		testCompile 'org.junit.jupiter:junit-jupiter-api:5.3.2'
		testCompile 'org.junit.jupiter:junit-jupiter-params:5.3.2'
		testCompile 'org.junit.jupiter:junit-jupiter-engine:5.3.2'
		testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.3.2'

Ursache und Lösung

Es scheint, dass die Versionen von junit-jupiter-xxx </ code> und junit-platform-launcher </ code> nicht übereinstimmen. Siehe https://stackoverflow.com/questions/57040675/java-lang-noclassdeffounderror-org-junit-platform-commons-preconditionviolation Ändern Sie daher die Verwendung der Stückliste.

dependencyManagement {
    imports {
        mavenBom "org.junit:junit-bom:5.5.2"
    }
}
dependencies {
...
    testCompile('org.junit.jupiter:junit-jupiter-api')
    testRuntime('org.junit.jupiter:junit-jupiter-engine')
    testCompile('org.junit.jupiter:junit-jupiter-params')
    testCompile('org.junit.platform:junit-platform-launcher')
}

Gemäß der obigen URL wird jedoch auch geschrieben, dass es in einigen Fällen herauskommt, weil es keine "Junit-Plattform-Commons" gibt. Die Versionsinkonsistenz ist möglicherweise nicht immer die Ursache.

Recommended Posts