java - getResourceAsStream ("abc.xml")返回 null

标签 java xml unit-testing

我正在编写这样的单元测试用例,

 public class XMLUtilsTest {
  private static final String XML_FOR_TEST ="a/b/c/xml_utils_test.xml";


 @Before
 public void setup() {

 }

@Test
public void testGetElementValue() throws Exception {
  InputStream inputStream = readTestXML(XML_FOR_TEST);

  System.out.println("Input Stream: "+inputStream);
}

private InputStream readTestXML(String testXmlFile) {
//InputStream inputStream = XMLUtilsTest.class.getResourceAsStream(testXmlFile);
//InputStream inputStream = Thread.currentThread().getContextClassLoader().getResourceAsStream(testXmlFile);
 InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(testXmlFile);
 return inputStream;
 }
}

在调试时,我观察到 readTestXML 方法中的 this.getClass().getClassLoader() 调用正确加载类,但是当在 this.getClass().getClassLoader() 的输出上调用 getResourceAsStream(testXmlFile) 时,输出为空。

我的项目结构是这样的,

 --src
   --main
   --test
       --java
           --XMLUtilsTest.java
       --resources
           --a.b.c
               --xml_utils_test.xml

请提出建议。

谢谢

维杰·博尔

最佳答案

您的代码正在运行。您需要做的就是检查 src/test/resources 是否在您的类路径上,并且应该没问题(项目属性 -> java 构建路径)

我刚刚重新创建了您的场景,效果很好。

//Both snippets should work (don't forget to prepend a slash if using getClass().getResourceAsStream)
System.out.println(this.getClass().getClassLoader().getResourceAsStream("a/b/c/file.txt"));
System.out.println(this.getClass().getResourceAsStream("/a/b/c/file.txt"));

关于java - getResourceAsStream ("abc.xml")返回 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17286165/

相关文章:

Java While循环跳过行,而不是每2个周期执行一次

php - 在 PHP 中使用 saveXML 保存 CDATA

c# - 如何对没有类型的异步任务进行单元测试

java - 如何编写 Java e2e(端到端)测试

java - 如何在 java 运行时将 jpanel 表单添加到 jpanel?

java - 在 AppEngine 中安排任务

java - Jsoup Parser如何从特定类获取文本

javascript - 使用 JavaScript 和 jQuery 修改命名空间 XML

c# - 如何检查 XElement 是否有任何子节点?

java - Junit 在通过测试时抛出警告