Java 如何在JUnit测试中从src/main/resources-relative读取文件?

Java 如何在JUnit测试中从src/main/resources-relative读取文件?,java,junit,Java,Junit,我有一个junit测试用例和一个我想在测试期间加载的文件。该文件位于src/main/resources下,而包的名称与java测试文件相同: src/test/java/my/path/to/FileTest.java src/test/resource/my/path/to/test.txt 用法: public class FileTest { @Test public void testRead() { String content = IOUtils.

我有一个junit测试用例和一个我想在测试期间加载的文件。该文件位于
src/main/resources
下,而包的名称与java测试文件相同:

src/test/java/my/path/to/FileTest.java
src/test/resource/my/path/to/test.txt
用法:

public class FileTest {
    @Test
    public void testRead() {
        String content = IOUtils.toString(this.getClass().getResourceAsStream("test.txt"), Charset.defaultCharset());
        System.out.println(content);
    }
}
在IDE中运行testcase时出现异常:

java.lang.NullPointerException
    at java.io.Reader.<init>(Reader.java:78)
    at java.io.InputStreamReader.<init>(InputStreamReader.java:113)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:2272)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:1041)
java.lang.NullPointerException
在java.io.Reader上。(Reader.java:78)
位于java.io.InputStreamReader。(InputStreamReader.java:113)
位于org.apache.commons.io.IOUtils.copy(IOUtils.java:2272)
位于org.apache.commons.io.IOUtils.toString(IOUtils.java:1041)

这里可能有什么问题?

我结束了将测试文件直接放入
/src/main/resources
而不使用子包的过程,并使用了


PropertiesLoaderUtils.loadProperties(新类路径资源(文件名))

我结束了将测试文件直接放入
/src/main/resources
而不使用子包,并使用


PropertiesLoaderUtils.loadProperties(新类路径资源(文件名))

您看到了吗?*必须尝试getResourceAsStream(“/my/path/to/test.txt”)?@user7294900是的,但我不想定义完全限定的包路径。@RC。是的,但也是
FileTest.class.getResourcesStream(“test.txt”)在NPE中失败。它应该是
System.out.println(新的BufferedReader(新的文件读取器(this.getClass().getClassLoader().getResource(“my/path/to/test.txt”).getFile()).readLine())
不带前导的
/
,或
System.out.println(新的BufferedReader(新的文件读取器(this.getClass().getResource(“/my/path/to/source.txt”).getFile()).readLine())/
的code>。顺便说一句,这里使用java 8。您看到了吗?*必须尝试getResourceAsStream(“/my/path/to/test.txt”)?@user7294900是的,但我不想定义完全限定的包路径。@RC。是的,但也是
FileTest.class.getResourcesStream(“test.txt”)在NPE中失败。它应该是
System.out.println(新的BufferedReader(新的文件读取器(this.getClass().getClassLoader().getResource(“my/path/to/test.txt”).getFile()).readLine())
不带前导的
/
,或
System.out.println(新的BufferedReader(新的文件读取器(this.getClass().getResource(“/my/path/to/source.txt”).getFile()).readLine())/
的code>。顺便说一句,这里使用Java8。