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依赖项进行了测试,它工作正常,因为它将位于类路径中..但问题是我们

我在/src/main/java中有一个文件,其中包含以下代码行:

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项目。我的猜测是,您的依赖项没有按照您需要的方式设置,或者您将文件放在了错误的模块中。