junit 5 控制台启动器抛出错误 "Caused by: java.lang.ClassNotFoundException"
junit 5 console launcher throwing an error "Caused by: java.lang.ClassNotFoundException"
我正在使用 java 项目的已编译 jar 库,并尝试通过控制台启动器 运行 进行 junit 5 测试。当我右键单击并 运行 作为 junit 测试时,相同的测试有效,但通过控制台启动器它抛出以下错误。
这就是我用来编译程序的,它没有错误地符合要求
javac -encoding UTF8 -cp /abc/Junit/lib/*:/var/Unit/lib/* /abc/Unit/ /Junit/test/BuildTest.java
这就是我运行测试的方式
java -jar /abc/Junit/lib/junit-platform-console-standalone-1.6.0.jar --classpath /abc/Junit/lib/*:/abc/Unit/lib/*:/abc/Junit/test --include-classname ".*" --scan-classpath
这是我遇到的错误
Thanks for using JUnit! Support its development at https://junit.org/sponsoring
.
+-- JUnit Jupiter [OK]
| '-- buildTests [X] com.build.Info
'-- JUnit Vintage [OK]
Failures (1):
JUnit Jupiter:buildTests
ClassSource [className = 'com.buildTests', filePosition = null]
=> java.lang.NoClassDefFoundError: com.build.VersionInfo
java.lang.Class.getDeclaredFields(Class.java:868)
org.junit.platform.commons.util.ReflectionUtils.getDeclaredFields(ReflectionUtils.java:1334)
org.junit.platform.commons.util.ReflectionUtils.findAllFieldsInHierarchy(ReflectionUtils.java:1092)
org.junit.platform.commons.util.ReflectionUtils.findFields(ReflectionUtils.java:1080)
org.junit.platform.commons.util.AnnotationUtils.findAnnotatedFields(AnnotationUtils.java:371)
[...]
Caused by: java.lang.ClassNotFoundException: com.build.VersionInfo
java.net.URLClassLoader.findClass(URLClassLoader.java:610)
java.lang.ClassLoader.loadClassHelper(ClassLoader.java:935)
java.lang.ClassLoader.loadClass(ClassLoader.java:880)
java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:1225)
java.lang.ClassLoader.loadClass(ClassLoader.java:863)
[...]
Test run finished after 73 ms
[ 3 containers found ]
[ 0 containers skipped ]
[ 3 containers started ]
[ 0 containers aborted ]
[ 2 containers successful ]
[ 1 containers failed ]
[ 1 tests found ]
[ 0 tests skipped ]
[ 0 tests started ]
[ 0 tests aborted ]
[ 0 tests successful ]
[ 0 tests failed ]
终于找到报错的原因了。问题是在 运行 测试时没有提供实际的 jar 和使用通配符。它必须是 blah/lib/core.jar 而不是 blah/lib/*。希望这对以后的人有所帮助。
我正在使用 java 项目的已编译 jar 库,并尝试通过控制台启动器 运行 进行 junit 5 测试。当我右键单击并 运行 作为 junit 测试时,相同的测试有效,但通过控制台启动器它抛出以下错误。
这就是我用来编译程序的,它没有错误地符合要求
javac -encoding UTF8 -cp /abc/Junit/lib/*:/var/Unit/lib/* /abc/Unit/ /Junit/test/BuildTest.java
这就是我运行测试的方式
java -jar /abc/Junit/lib/junit-platform-console-standalone-1.6.0.jar --classpath /abc/Junit/lib/*:/abc/Unit/lib/*:/abc/Junit/test --include-classname ".*" --scan-classpath
这是我遇到的错误
Thanks for using JUnit! Support its development at https://junit.org/sponsoring
.
+-- JUnit Jupiter [OK]
| '-- buildTests [X] com.build.Info
'-- JUnit Vintage [OK]
Failures (1):
JUnit Jupiter:buildTests
ClassSource [className = 'com.buildTests', filePosition = null]
=> java.lang.NoClassDefFoundError: com.build.VersionInfo
java.lang.Class.getDeclaredFields(Class.java:868)
org.junit.platform.commons.util.ReflectionUtils.getDeclaredFields(ReflectionUtils.java:1334)
org.junit.platform.commons.util.ReflectionUtils.findAllFieldsInHierarchy(ReflectionUtils.java:1092)
org.junit.platform.commons.util.ReflectionUtils.findFields(ReflectionUtils.java:1080)
org.junit.platform.commons.util.AnnotationUtils.findAnnotatedFields(AnnotationUtils.java:371)
[...]
Caused by: java.lang.ClassNotFoundException: com.build.VersionInfo
java.net.URLClassLoader.findClass(URLClassLoader.java:610)
java.lang.ClassLoader.loadClassHelper(ClassLoader.java:935)
java.lang.ClassLoader.loadClass(ClassLoader.java:880)
java.net.FactoryURLClassLoader.loadClass(URLClassLoader.java:1225)
java.lang.ClassLoader.loadClass(ClassLoader.java:863)
[...]
Test run finished after 73 ms
[ 3 containers found ]
[ 0 containers skipped ]
[ 3 containers started ]
[ 0 containers aborted ]
[ 2 containers successful ]
[ 1 containers failed ]
[ 1 tests found ]
[ 0 tests skipped ]
[ 0 tests started ]
[ 0 tests aborted ]
[ 0 tests successful ]
[ 0 tests failed ]
终于找到报错的原因了。问题是在 运行 测试时没有提供实际的 jar 和使用通配符。它必须是 blah/lib/core.jar 而不是 blah/lib/*。希望这对以后的人有所帮助。