我正在编写这样的单元测试用例,
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/