本问题已经有最佳答案,请猛点这里访问。
我有一个单元测试需要使用位于src/test/resources/abc.xml中的XML文件。把文件的内容放到String中最简单的方法是什么?
另外,stackoverflow.com/questions/1656797/…
@尼基塔,尽管我的回答是肯定的,但这些问题并没有提到我认为是正确解决OP问题的方法的getResourceAsStream()。
@kirk,getresourceasstream将文件缓存在类加载器中。这是不必要的。
@Thorbj&248;rn,你的参考资料在哪里?在任何情况下,它肯定是方便和便携的,这实际上是必要的。
有关Android Studio,请参阅以下链接stackoverflow.com/a/33057561/3256989
耶戈尔256的回答不起作用。我的情况是getClass().getClassLoader().getResource("com/example/ninja.txt"));,我的资源文件位于com/example/ninja.txt。
最后,我找到了一个简洁的解决方案,这要归功于ApacheCommons:
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"
);
}
}
工作得很好。文件src/test/resources/com/example/abc.xml已加载(我正在使用maven)。
如果将"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!
).asSt