繁体   English   中英

JUnit 测试错误:java.lang.NoClassDefFoundError:org/junit/platform/commons/PreconditionViolationException

[英]JUnit Tests error: java.lang.NoClassDefFoundError: org/junit/platform/commons/PreconditionViolationException

首先,我使用 VSCODE(使用 Java Test Runner 扩展)在 Java 中编写此程序,并且在尝试运行测试时收到此错误:

java.lang.NoClassDefFoundError: org/junit/platform/commons/PreconditionViolationException
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createFilteredTest(JUnit5TestLoader.java:70)
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createTest(JUnit5TestLoader.java:64)
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.loadTests(JUnit5TestLoader.java:53)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:526)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.commons.PreconditionViolationException
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
    ... 7 more

我正在使用 Gradle,这是我的依赖项:

dependencies {
    implementation 'org.hyperledger.fabric-chaincode-java:fabric-chaincode-shim:1.4.3'
    implementation 'com.owlike:genson:1.5'
    implementation 'com.google.code.gson:gson:2.8.5'
    implementation 'com.fasterxml.jackson.core:jackson-databind:2.10.1'

    testImplementation 'org.junit.jupiter:junit-jupiter:5.4.2'
    testImplementation 'org.assertj:assertj-core:3.11.1'
    testImplementation 'org.mockito:mockito-core:2.+'
}

这个页面也许可以为您提供一些信息:

https://github.com/iluwatar/java-design-patterns/issues/1007

正如它所说,也许你需要'junit-platform-commons'。

怎么样:

  • org.junit.jupiter:junit-jupiter升级到5.6.0列表

或者

  • 添加 testImplementation('org.junit.platform:junit-platform-launcher:1.5.2')

I got the same error with Visual Studio Code 1.53.2 in a Gradle 6.8.2 project when I switched to JUnit 5 from JUnit 4. To switch to JUnit 5, I made the following changes to my build script build.gradle as instructed in this Gradle 用户指南

test {
    useJUnitPlatform()
}

dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.6.0'
    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine'
}

虽然上面允许我成功运行.\gradlew.bat test ,但 Visual Studio Code 不允许我从编辑器本身运行测试,并且会因帖子中共享的错误而中止。

为了解决这个问题,我按照这里的说明进行操作,即在 VS Code 中,按 F1 并键入/选择“Java:清洁 Java 语言服务器工作区”。 这解决了上述错误,并且 JUnit 5 测试现在再次从编辑器中运行。

我也遇到过这个问题,发现解决办法是升级JUnit Jupiter API的版本。

  • Windows: 10.0.19044
  • VS代码: 1.67.1
  • Java 插件的测试运行器: v0.35.0

JUnit Jupiter API 的版本不起作用并给我以下错误是5.3.1

java.lang.NoClassDefFoundError: org/junit/platform/commons/PreconditionViolationException
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createFilteredTest(JUnit5TestLoader.java:70)
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.createTest(JUnit5TestLoader.java:64)
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.loadTests(JUnit5TestLoader.java:53)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:513)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:756)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.commons.PreconditionViolationException
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
URLClassLoader.java:381
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
ClassLoader.java:424
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
Launcher.java:349
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
ClassLoader.java:357
    ... 7 more

工作的 JUnit Jupiter API 的版本是5.8.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM