如何将文本文件资源读入 Java 单元测试?

2022-08-31 05:28:56

我有一个单元测试,需要使用位于 中的 XML 文件。将文件内容放入的最简单方法是什么?src/test/resources/abc.xmlString


答案 1

最后,我找到了一个简洁的解决方案,这要归功于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();
  }
}

答案 2

直截了当:

ClassLoader classLoader = getClass().getClassLoader();
File file = new File(classLoader.getResource("file/test.xml").getFile());

推荐