gpt4 book ai didi

java - 从相对路径读取 XML - java.io.FileNotFoundException :(The system cannot find the path specified)

转载 作者:行者123 更新时间:2023-12-02 11:45:12 25 4
gpt4 key购买 nike

我有以下方法应该检查两个 XML 文档是否匹配:

@Test
public void currentXMLShouldMatchXMLSpecification() throws Exception {

String xml1 = convertXMLToString("/module/docs/document1.xml");
String xml2 = convertXMLToString("/module/docs/document2.xml");

XMLUnit.setIgnoreWhitespace(true); // ignore whitespace differences

assertXMLEquals(xml1, xml2);
}

将 XML 转换为字符串方法:

   public static String convertXMLToString(String filePath) throws IOException {

//filename is filepath string
BufferedReader br = new BufferedReader(new FileReader(new File(filePath)));
String line;
StringBuilder sb = new StringBuilder();

while((line=br.readLine())!= null){
sb.append(line.trim());
}

return line;
}

断言 XML 等于方法:

   public static void assertXMLEquals(String expectedXML, String actualXML) throws Exception {
XMLUnit.setIgnoreWhitespace(true);
XMLUnit.setIgnoreAttributeOrder(true);

DetailedDiff diff = new DetailedDiff(XMLUnit.compareXML(expectedXML, actualXML));

List<?> allDifferences = diff.getAllDifferences();
Assert.assertEquals("Differences found: " + diff.toString(), 0, allDifferences.size());
}

错误:

java.io.FileNotFoundException:(The system cannot find the path specified)
at java.io.FileInputStream.open(Native Method)
at java.io.FileInputStream.<init>(FileInputStream.java:146)
at java.io.FileReader.<init>(FileReader.java:72)

我需要将 XML 文档移动到 Resources 文件夹下吗?或者这是我犯的代码错误?

请注意,包含此测试的测试类与我尝试阅读的文档不在同一模块中。

最佳答案

对于像这样的 java 单元测试,我对测试文件的建议是:

  1. 测试资源位于src/test/resources下,然后位于与测试类的包相匹配的文件夹中。
  2. 使用 commons-io 中的 IOUtils.toString(InputStream) 读取文件。
  3. 使用Class.getResourcesAsStream(String)引用文件本身。

因此,对于 com.my.package.MyTest,我会将 XML 文件保存为 src/test/resources/com/my/package/test_document1.xml,代码可能如下所示:

try(InputStream in = MyTest.class.getResourceAsStream("test_document1.xml")) {
return IOUtils.toString(in);
}

关于java - 从相对路径读取 XML - java.io.FileNotFoundException :(The system cannot find the path specified),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48261870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com