我正在将生成的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接口。

10-06 10:04