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

这是要重现的代码片段:

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

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

预期命名空间前缀 'ns' 但为 'ns1' - 比较 /pfx:a[1] 与 /pfx:a[1] junit.framework.AssertionFailedError at NewEmptyJUnitTest.testDifferentPrefix(NewEmptyJUnitTest.java:95)

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

4

1 回答 1

3

通过不指定任何DifferenceEvaluator您隐式使用DifferenceBuilders.DEFAULT的不同名称空间前缀是“相似”的差异。

如果您想忽略“相似”差异,您必须checkForSimilar()DiffBuilder.

于 2016-08-10T04:18:00.243 回答