Ubuntu下使用Randoop生成测试时myJar.jar不存在的问题求助
解决Randoop --testjar参数找不到target目录下jar包的问题
问题重现
在搭载OpenJDK 17的Ubuntu系统中执行命令:
java -classpath Randoop/randoop-all-4.3.2.jar:./target randoop.main.Main gentests --testjar=myJar.jar
或修改classpath后执行:
java -classpath Randoop/randoop-all-4.3.2.jar:target randoop.main.Main gentests --testjar=myJar.jar
均出现错误:
Randoop for Java version 4.3.2.
Error while reading jar file myJar: myJar (No such file or directory).
待测试的myJar.jar实际存在于target目录中。
解决方案
--testjar参数需要指定jar文件的完整相对路径或绝对路径,而非仅文件名,因为Randoop不会自动从classpath中查找该jar文件。执行以下任意命令即可解决:
使用相对路径指定target目录下的jar:
java -classpath Randoop/randoop-all-4.3.2.jar:./target randoop.main.Main gentests --testjar=./target/myJar.jar或省略
./:java -classpath Randoop/randoop-all-4.3.2.jar:target randoop.main.Main gentests --testjar=target/myJar.jar使用绝对路径(替换
/path/to/your/project为你的项目实际路径):java -classpath Randoop/randoop-all-4.3.2.jar:/path/to/your/project/target randoop.main.Main gentests --testjar=/path/to/your/project/target/myJar.jar
原因说明
classpath的作用是让JVM加载Randoop自身的类以及待测试jar中的类,但--testjar参数是明确告诉Randoop要读取哪个jar文件来生成测试用例,该参数不依赖JVM的classpath查找机制。仅写myJar.jar时,Randoop会在当前工作目录下查找,而非target目录,因此出现找不到文件的错误。
内容的提问来源于stack exchange,提问作者Saverio Mirko Viola
相关产品推荐
相关产品推荐

