由于名称空间前缀不同,XmlUnit 2.x比较2 xmls失败

时间:2016-08-10 01:02:03

标签: java xmlunit-2

  • 在java中使用XmlUnit 2.2.1比较两个xmls。
  • 文档之间的唯一区别在于名称空间前缀。

以下是重现的代码段:

 @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());        
}

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

  

预期的命名空间前缀&#39; ns&#39;但是&#ns; ns1&#39; - 在/ pfx比较:a [1]到at / pfx:a [1]   junit.framework.AssertionFailedError       在NewEmptyJUnitTest.testDifferentPrefix(NewEmptyJUnitTest.java:95)

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

1 个答案:

答案 0 :(得分:1)

通过不指定任何DifferenceEvaluator,您隐式使用DifferenceBuilders.DEFAULT,其中不同的名称空间前缀是&#34; SIMILAR&#34;差异。

如果你想忽略&#34; SIMILAR&#34;您必须在checkForSimilar()上设置DiffBuilder的差异。