这是项目中类的构建结构
(root project)
|__ build
|__ classes
|__ main/org/loklak/harvester
|__ abc.class
|__ test/org/loklak/harvester
|__ abc_test.class
|__ def_test.class
我使用 gradle 和 junit 4.12 构建项目,并正确构建
我检查过abc_test.class存在于上面的位置,
但是当我跑步时 - >
java -Xmx1024m -classpath build/libs/loklak_server-all.jar org.junit.runner.JUnitCore org.loklak.harvester.abc_test
我收到错误 - >
JUnit version 4.12
.E
Time: 0.004
There was 1 failure:
1) initializationError(org.junit.runner.JUnitCommandLineParseResult)
java.lang.IllegalArgumentException: Could not find class [org.loklak.harvester.abc_test]
at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:102)
at org.junit.runner.JUnitCommandLineParseResult.parseArgs(JUnitCommandLineParseResult.java:50)
at org.junit.runner.JUnitCommandLineParseResult.parse(JUnitCommandLineParseResult.java:44)
at org.junit.runner.JUnitCore.runMain(JUnitCore.java:72)
at org.junit.runner.JUnitCore.main(JUnitCore.java:36)
Caused by: java.lang.ClassNotFoundException: org.loklak.harvester.abc_test
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)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at org.junit.internal.Classes.getClass(Classes.java:16)
at org.junit.runner.JUnitCommandLineParseResult.parseParameters(JUnitCommandLineParseResult.java:100)
... 4 more
FAILURES!!!
Tests run: 1, Failures: 1
这个命令正常工作 - >
java -Xmx1024m -classpath build/libs/loklak_server-all.jar org.loklak.harvester.abc
abc_test.java
package org.loklak.harvester;
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
import org.loklak.harvester.abc;
public class abc_test {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(def_test.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
System.out.println(result.wasSuccessful());
}
}
我无法弄清楚错误,我在java命令行命令中缺少什么?
答案 0 :(得分:1)
你的命名真的令人困惑。类名在java中为UpperCase;你不要在其中使用_。请注意:您在代码中谈到abc_test
;但是例外情况test_harvester
- 一个名字在你输入的其他任何地方都没有显示!
除此之外,我猜测这里的答案是:运行JUnit时,类路径中需要三个部分:
我猜:你的测试类在你为JUnit运行提供给java的JAR中不。可能是因为gradle默认情况下不会将测试类添加到您的JAR中(这是有道理的:您为什么要将单元测试类发送给您的客户?!)