![](/img/trans.png)
[英]Exception in thread “main” java.lang.NoClassDefFoundError: org/junit/platform/commons/util/ClassNamePatternFilterUtils
[英]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
列表或者
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的版本。
10.0.19044
1.67.1
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.