【问题标题】:Compiling and running JUnit test suite编译和运行 JUnit 测试套件
【发布时间】:2018-11-19 16:17:37
【问题描述】:

我已经制作了一个 JUnit 测试套件,但我无法从命令行构建和运行它,而不是让 IntelliJ 发挥它的魔力。我已经下载了 junit-4.12.jar 和 hamcrest-core-1.3.jar。理想情况下,我正在寻找一种“便携式”解决方案,即所有必要的参数都在命令中,而不是在某个地方的 bash 文件中的路径变量中。

我相信我可以很好地编译它:javac -cp /path/to/junit-4.12.jar:. TestSuite.java。这会生成一个没有错误的TestSuite.class 文件。

但是我已经尝试了所有可以找到的命令来运行它,但总是出错。例如:java -cp /path/to/junit-4.12.jar:/path/to/hamcrest-core-1.3.jar:. org.junit.runner.JUnitCore TestSuite 给出:

JUnit version 4.12
    Exception in thread "main" java.lang.NoClassDefFoundError: org/hamcrest/SelfDescribing
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    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:349)
    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.JUnitCommandLineParseResult.createRequest(JUnitCommandLineParseResult.java:118)
    at org.junit.runner.JUnitCore.runMain(JUnitCore.java:77)
    at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
    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:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 17 more

有什么想法吗?

【问题讨论】:

  • 如果您在 Windows 中运行,请使用 ; 而不是 :,来分隔 jar 文件

标签: java junit compiler-errors


【解决方案1】:

我认为如果你用双引号将你的类路径括起来并使用分号而不是冒号作为分隔符,它应该可以工作:

java -cp "/path/to/junit-4.12.jar;/path/to/hamcrest-core-1.3.jar;." org.junit.runner.JUnitCore TestSuite

如果你仍然遇到同样的错误,那么我认为你只是在你的 hamcrest 路径中有错字。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-04
    • 2020-02-27
    • 1970-01-01
    • 2011-04-29
    • 2013-02-11
    • 1970-01-01
    • 2011-08-30
    • 1970-01-01
    相关资源
    最近更新 更多