java中单元测试期间的类路径
我在/src/main/java中有一个文件,其中包含以下代码行:java中单元测试期间的类路径,java,unit-testing,junit,classpath,Java,Unit Testing,Junit,Classpath,我在/src/main/java中有一个文件,其中包含以下代码行: Test.class.getClassLoader().getResourceAsStream("test.json") 相应的资源文件出现在/src/main/resources中……但是我们正在考虑从类路径(src/main/resources)中删除这个test.json文件夹中,我们将包含一个jar依赖项,该jar将包含此测试。json…我已经使用jar依赖项进行了测试,它工作正常,因为它将位于类路径中..但问题是我们
Test.class.getClassLoader().getResourceAsStream("test.json")
相应的资源文件出现在/src/main/resources中……但是我们正在考虑从类路径(src/main/resources)中删除这个test.json文件夹中,我们将包含一个jar依赖项,该jar将包含此测试。json…我已经使用jar依赖项进行了测试,它工作正常,因为它将位于类路径中..但问题是我们有一些测试用例..如果不包含jar依赖项,这些测试将失败..是否可以通过将此文件放入src/test/resources file..在不提供jar依赖项的情况下..试试这个,我不确定,但它应该可以工作:
URL fileUrl = Test.class.getResource("test.json");
File testFile= new File(FileLocator.toFileURL(fileUrl).getPath());
看这个
这一个对我有用:
项目:新文件
档案:
Test.java
package newfile.org;
public class Test {
public static void main(String[] args) {
// TODO Auto-generated method stub
}
}
myfile.txt
It's my file
设置为其他项目的jar库:
MyClass.java
package example;
import newfile.org.Test;
public class MyClass {
public static void main(String args[]) {
try (
InputStream resourceAsStream = Test.class.getResourceAsStream("myfile.txt")) {
if(resourceAsStream == null) {
System.out.println("it's null");
}
int r;
while((r = resourceAsStream.read()) != -1) {
System.out.println((char)r);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
输出:
I
t
'
s
m
y
f
i
l
e
你试过了吗?你应该用不到一分钟的时间来了解自己。放在src/test/resources中是不起作用的。我已经试过了。还有其他建议吗?从Paths看来,我想这是一个maven项目。我的猜测是,您的依赖项没有按照您需要的方式设置,或者您将文件放在了错误的模块中。