我正在将生成的XML文件与另一个使用XMLunit的示例进行比较,而Im在使用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类可以解决此问题,但仍然行不通。
这是带有XML比较失败示例的图像:
(在新标签页中打开以全屏显示)c:
如您所见,两个子节点都是倒置的
提前TY。胡安
最佳答案
使用非默认的ElementQualifier
是正确的解决方案,但是RecursiveElementAndTextQualifier
当然不能满足您的需求。
乍一看,似乎应该可以通过查看元素的名称和caption
属性的值来找到匹配的元素。如果这是正确的,则将ElementNameAndAttributeQualifier
与"caption"
作为构造函数参数传入应该可以解决问题。
XMLUnit内置了更多选项,在最坏的情况下,如果现有选项都不符合您的需要,则您需要自己实现ElementQualifier
接口。