我正在尝试从命令行运行Junit测试用例。
我从Windows D:\WorkSpace\Testspace\MyProject\target
文件夹中像这样触发我的测试:
java -cp "classes;junit;dependency\*" org.junit.runner.JUnitCore com.abc.TestA
这是一个Maven项目。它引发以下错误:
2019-07-09T17:59:41.330 ERROR [com.abc.IOUtil] - FileNotFoundException Occurredjava.io.FileNotFoundException: D:\WorkSpace\Testspace\MyProject\target\cde\FGH\SomeRandomFile.xml (The system cannot find the path specified)IOUtil
这个包含xml的cde
文件夹也位于target
文件夹中,我从该文件夹中触发测试命令。
是否可以在Java命令行中包含资源文件?
答案 0 :(得分:0)
在您的源代码中,使用以下构造:
package com.foo.package;
public class Example {
public void loadResourceExample) {
Example.class.getResource("/cde/FGH/SomeRandomFile.xml");
Example.class.getResource("relative/example.xml");
}
}
第一行将从类路径中提到的任何文件夹或jar中加载资源“ /cde/FGH/SomeRandomFile.xml”,因此在示例命令行中,例如将扫描D:\WorkSpace\Testspace\MyProject\target\classes\cde\FGH\SomeRandomFile.xml
。
第二行考虑了您的类的包名称,因此,它将例如在D:\WorkSpace\Testspace\myProject\dependency\somedep.jar
上检查条目/com/foo/package/relative/example.xml
。
请注意,-cp参数中的*语法会将指定文件夹中的每个 JAR 包含在内,并将其包含在类路径中。这就是全部。
如果您不使用getResource
,则实际上取决于“当前工作目录”,并且-cp参数不会起作用。