XMLunit 比较失败,因为子节点顺序
XMLunit Comparison failure because child nodes order
我正在将生成的 XML 文件与另一个使用 XMLunit 的示例进行比较,我在 ChildNodes Order 及其属性方面遇到了问题。
(Linux 和 Mac 代不同)
这是我试过的:
@Test
public void testComparingXML() throws Exception {
XMLUnit.setIgnoreWhitespace(true);
String expectedXml = IOUtils.toString(ConnectorStrategyStudioXmlTest.class.getClassLoader().getResourceAsStream(EXPECTED_XML));
String actualXml = IOUtils.toString(ConnectorStrategyStudioXmlTest.class.getClassLoader().getResourceAsStream(ACTUAL_XML));
Diff diff = new Diff(expectedXml, actualXml);
diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
DetailedDiff detailedDiff = new DetailedDiff(diff);
assertTrue(detailedDiff.toString(), detailedDiff.similar());
}
我了解到使用 RecursiveElementNameAndTextQualifier class 可以解决问题,但仍然无效。
这是一张图片,其中包含 XML 比较失败的示例:
(在新标签页中打开全屏)c:
可以看到,两个子节点都是倒置的
提前TY。娟
使用非默认 ElementQualifier
是正确的解决方案,但 RecursiveElementAndTextQualifier
肯定不能满足您的需要。
乍一看,似乎可以通过查看元素的名称和 caption
属性的值来找到匹配的元素。如果这是正确的,那么 ElementNameAndAttributeQualifier
和 "caption"
作为构造函数参数传入应该可以解决问题。
XMLUnit 内置了更多选项,在最坏的情况下,如果 none 现有选项满足您的需要,您需要自己实现 ElementQualifier
接口。
我正在将生成的 XML 文件与另一个使用 XMLunit 的示例进行比较,我在 ChildNodes Order 及其属性方面遇到了问题。 (Linux 和 Mac 代不同)
这是我试过的:
@Test
public void testComparingXML() throws Exception {
XMLUnit.setIgnoreWhitespace(true);
String expectedXml = IOUtils.toString(ConnectorStrategyStudioXmlTest.class.getClassLoader().getResourceAsStream(EXPECTED_XML));
String actualXml = IOUtils.toString(ConnectorStrategyStudioXmlTest.class.getClassLoader().getResourceAsStream(ACTUAL_XML));
Diff diff = new Diff(expectedXml, actualXml);
diff.overrideElementQualifier(new RecursiveElementNameAndTextQualifier());
DetailedDiff detailedDiff = new DetailedDiff(diff);
assertTrue(detailedDiff.toString(), detailedDiff.similar());
}
我了解到使用 RecursiveElementNameAndTextQualifier class 可以解决问题,但仍然无效。
这是一张图片,其中包含 XML 比较失败的示例:
可以看到,两个子节点都是倒置的
提前TY。娟
使用非默认 ElementQualifier
是正确的解决方案,但 RecursiveElementAndTextQualifier
肯定不能满足您的需要。
乍一看,似乎可以通过查看元素的名称和 caption
属性的值来找到匹配的元素。如果这是正确的,那么 ElementNameAndAttributeQualifier
和 "caption"
作为构造函数参数传入应该可以解决问题。
XMLUnit 内置了更多选项,在最坏的情况下,如果 none 现有选项满足您的需要,您需要自己实现 ElementQualifier
接口。