java - 编译和运行 JUnit 测试套件
问题描述
我已经制作了一个 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
任何想法出了什么问题?
解决方案
我认为如果你用双引号括住你的类路径并使用分号而不是冒号作为分隔符,它应该可以工作:
java -cp "/path/to/junit-4.12.jar;/path/to/hamcrest-core-1.3.jar;." org.junit.runner.JUnitCore TestSuite
如果您仍然遇到相同的错误,那么我认为您只是在 hamcrest 路径中有错字。
推荐阅读
- material-ui - 用于 groupBy 标题的 Material UI 自动完成自定义 CSS
- javascript - 如何在字符串中获取选定的多复选框值
- firebase - Firebase 实时快照更新未在 vue 中更新
- azure - Az Powershell New-AzureADServiceAppRoleAssignment 哪个 id 是哪个?
- javascript - 未在 API 可执行应用程序中调用 Appscript 函数
- c - puts函数反转后不打印字符串
- c - 无法从 GNU 示例代码中更改 `extern char` 标识符?
- asp.net - CORS 标头存在于 /connect 但不存在于 /negotiate
- c++ - 如何通过 MPI_Get 多次从一级获取数据
- python - 机器视觉相机图像不让我使用 Tkinter Lable