java - 我不知道为什么 junit 会出现此错误

标签 java junit

我有以下文件夹结构

base directory = "."
build directory (for classes) = "./build/classes"
build directory (for test classes) = "./build/test/classes"
source = "./src"
test = "./test"
test_libraries = "./test_libraries"

当我使用命令运行测试文件时一切正常

java -cp /usr/share/java/junit4-4.11.jar:build/classes:build/test/classes/ org.junit.runner.JUnitCore myclass.MyClassTest

但是当我将 juint 文件的位置更改为 test_libraries/junit4-4.44.jar 时 我运行命令

java -cp ./test_libraries/junit4-4.11.jar:build/classes:build/test/classes/ org.junit.runner.JUnitCore myclass.MyClassTest

我收到以下错误

Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClass(ClassLoader.java:760)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:467)
at java.net.URLClassLoader.access$100(URLClassLoader.java:73)
at java.net.URLClassLoader$1.run(URLClassLoader.java:368)
at java.net.URLClassLoader$1.run(URLClassLoader.java:362)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:361)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
at org.junit.runner.Computer.getSuite(Computer.java:28)
at org.junit.runner.Request.classes(Request.java:75)
at org.junit.runner.JUnitCore.run(JUnitCore.java:117)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:96)
at org.junit.runner.JUnitCore.runMainAndExit(JUnitCore.java:47)
at org.junit.runner.JUnitCore.main(JUnitCore.java:40)
Caused by: java.lang.ClassNotFoundException: org.hamcrest.SelfDescribing
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 18 more

最佳答案

您需要Hamcrest在你的类路径上。

关于java - 我不知道为什么 junit 会出现此错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31661728/

相关文章:

java - 将参数限制为某些已定义的常量

java - Spring Test无法获取Spring配置Bean

java - 当前没有 session 绑定(bind)到执行上下文

java - 滥用 Optional#map 考虑缺少 Optional#peek 方法

java - 使用 gradle 的多个 IntellijIdea 版本的插件

java - 前瞻性正则表达式产生意外组

java - 方法中的每个可能分支都应该有一个单独的 junit 吗?

java - 如何在每个@Test 中为@BeforeEach 方法提供参数

java - JUnit 应用程序套件测试

gradle - CircleCI 是否能够在没有额外插件的情况下解释通过 Gradle 生成的 JUnit XML 结果?