JUnit 5 échoue avec java.lang.NoSuchMethodError: org.junit.platform.launcher.Launcher.execute

phénomène

Lorsque j'ai essayé d'exécuter JUit 5 dans Eclipse, je ne pouvais pas l'exécuter avec l'exception suivante. Aucun test trouvé avec le lanceur de test'JUnit 5 '. S'affiche et les tests n'ont pas pu être exécutés.

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)

Les dépendances ressemblent à ceci.

		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'

Cause et solution

Il semble que les versions de junit-jupiter-xxx </ code> et junit-platform-launcher </ code> ne correspondent pas. Voir https://stackoverflow.com/questions/57040675/java-lang-noclassdeffounderror-org-junit-platform-commons-preconditionviolation Par conséquent, changez pour utiliser BOM.

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')
}

Cependant, selon l'URL ci-dessus, il est également écrit que dans certains cas, il sort parce qu'il n'y a pas de `` junit-platform-commons ''. L'incohérence de version n'est pas toujours la cause.

Recommended Posts