代码之家  ›  专栏  ›  技术社区  ›  Juan Martin Desimoni

XMLunit比较失败,因为子节点顺序

  •  1
  • Juan Martin Desimoni  · 技术社区  · 11 年前

    我正在将生成的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类可以解决这个问题,但仍然不起作用。

    下面是一个XML比较失败的示例: inverted (在新选项卡中打开以全屏显示)c:

    如您所见,两个子节点都是反向的

    提前TY。胡安

    1 回复  |  直到 11 年前
        1
  •  4
  •   Stefan Bodewig    11 年前

    使用非默认值 ElementQualifier 是正确的解决方案,但是 RecursiveElementAndTextQualifier 肯定做不到你需要的。

    乍一看,似乎可以通过查看元素的名称和 caption 属性如果这是正确的,那么 ElementNameAndAttributeQualifier 具有 "caption" 作为构造函数参数传入应该可以达到这个目的。

    XMLUnit中内置了更多选项,在最坏的情况下,您需要实现 元素限定符 如果现有的选项都不符合您的需求,请自行选择。