如何将文本文件资源读入 Java 单元测试?
2022-08-31 05:28:56
我有一个单元测试,需要使用位于 中的 XML 文件。将文件内容放入的最简单方法是什么?src/test/resources/abc.xml
String
我有一个单元测试,需要使用位于 中的 XML 文件。将文件内容放入的最简单方法是什么?src/test/resources/abc.xml
String
最后,我找到了一个简洁的解决方案,这要归功于Apache Commons:
package com.example;
import org.apache.commons.io.IOUtils;
public class FooTest {
@Test
public void shouldWork() throws Exception {
String xml = IOUtils.toString(
this.getClass().getResourceAsStream("abc.xml"),
"UTF-8"
);
}
}
完美工作。文件已加载(我正在使用 Maven)。src/test/resources/com/example/abc.xml
如果替换为 ,例如 ,将加载以下资源:"abc.xml"
"/foo/test.xml"
src/test/resources/foo/test.xml
您还可以使用仙人掌:
package com.example;
import org.cactoos.io.ResourceOf;
import org.cactoos.io.TextOf;
public class FooTest {
@Test
public void shouldWork() throws Exception {
String xml = new TextOf(
new ResourceOf("/com/example/abc.xml") // absolute path always!
).asString();
}
}
直截了当:
ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("file/test.xml").getFile());