XmlUnit 2.x 由于命名空间前缀不同,比较 2 个 xml 失败

XmlUnit 2.x compare 2 xmls fail because of difference in namespace prefix

这里是要重现的代码片段:

 @Test 
 public void testDifferentPrefix() {
            final String control = "<ns:a xmlns:ns='abc'><b attr=\"xyz\"></b></ns:a>";
            final String test = "<ns1:a xmlns:ns1='abc'><b attr=\"xyz\"></b></ns1:a>";

            Diff myDiff = DiffBuilder.compare(Input.fromString(control))
                              .withTest(Input.fromString(test))
                              .build();
            Assert.assertFalse(myDiff.toString(), myDiff.hasDifferences());        
}

当上述测试为 运行 时,它失败并出现以下错误:

Expected namespace prefix 'ns' but was 'ns1' - comparing at /pfx:a[1] to at /pfx:a[1] junit.framework.AssertionFailedError at NewEmptyJUnitTest.testDifferentPrefix(NewEmptyJUnitTest.java:95)

为了避免错误应该更正什么?我相信我遗漏了一些微不足道的东西。

通过不指定任何 DifferenceEvaluator,您将隐式使用 DifferenceBuilders.DEFAULT,不同的命名空间前缀是 "SIMILAR" 差异。

如果您想忽略 "SIMILAR" 差异,您必须在 DiffBuilder 上设置 checkForSimilar()