【发布时间】:2016-12-03 05:38:09
【问题描述】:
我正在尝试使用 randoop(Java 自动测试生成器)并且 randoop 找不到我的课程:
eliezer@ubuntu:~/Desktop$ java -ea -classpath \
randoop.1.3.2.jar:home/eliezer/myclasses \
randoop.main.Main gentests \
--testclass=/home/eliezer/Desktop/myclasses/ArrayListError
policy = sun.security.provider.PolicyFile@85af80
Throwable thrown while handling command:java.lang.Error:\
classForName(/home/eliezer/Desktop/myclasses/ArrayListError)
java.lang.Error: classForName(/home/eliezer/Desktop/myclasses/ArrayListError)
at randoop.util.Reflection.classForName(Reflection.java:206)
at randoop.util.Reflection.loadClassesFromList(Reflection.java:386)
at randoop.main.GenInputsAbstract.findClassesFromArgs(GenInputsAbstract.java:507)
at randoop.main.GenTests.handle(GenTests.java:184)
at randoop.main.Main.nonStaticMain(Main.java:80)
at randoop.main.Main.main(Main.java:42)
Caused by: java.lang.ClassNotFoundException: \
/home/eliezer/Desktop/myclasses/ArrayListError
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:186)
at randoop.util.Reflection.classForName(Reflection.java:198)
... 5 more
Randoop failed.
Last sequence under execution:null
我的类名为 ArrayListError.java,位于 /home/eliezer/Desktop/myclasses。
randoop 文档位于:https://randoop.github.io/randoop/manual/index.html。
我确信这确实是微不足道的事情,但我对这些事情缺乏经验。
【问题讨论】:
-
home.eliezer.Desktop.myclasses是你的包还是目录结构? -
@Rp 它是一个目录结构——我只测试一个类,它在 /home/eliezer/myclasses 中,它的名字是 ArrayListError.java
-
那么你需要将类路径设置为
home/eliezer/Desktop/myclasses(你的类路径中缺少'Desktop')并且你需要调用classForName("ArrayListError"); -
@Rp 我现在已经做到了 - 仍然是错误。我如何以及在哪里调用 classForName("ArrayListError") 谢谢
-
试试
java -ea -classpath randoop.1.3.2.jar:/home/eliezer/Desktop/myclasses randoop.main.Main gentests --testclass=ArrayListError