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

标签 java unit-testing

我有一个单元测试需要使用位于 src/test/resources/abc.xml 中的 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"
    );
  }
}

完美运行。文件 src/test/resources/com/example/abc.xml 已加载(我使用的是 Maven)。

如果将 "abc.xml" 替换为 "/foo/test.xml",则会加载此资源:src/test/resources/foo/test.xml

您也可以使用Cactoos :

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();
  }
}

关于java - 如何将文本文件资源读入 Java 单元测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3891375/

相关文章:

c# - 最小起订量设置函数抛出异常不起作用

java - 单元测试 Java Spark 微框架

java - java中程序执行完成后才能看到输出

java - 在 switch-case 中切换到默认情况

java - HTML 表格到 java 对象

javascript - 如何用jsunit测试ajax?

python unittest导入类子目录

java - 制作netty-socketio服务器集群

java - CompareTo 方法(在 Comparable 接口(interface)中)是递归的吗?

postgresql - 如何在无法迁移表的情况下对 Laravel 应用程序进行单元测试,因为迁移是由另一个应用程序处理的