XmlUnit 2.x 由于命名空间前缀不同,比较 2 个 xml 失败
XmlUnit 2.x compare 2 xmls fail because of difference in namespace prefix
- 在 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());
}
当上述测试为 运行 时,它失败并出现以下错误:
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()
。
- 在 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());
}
当上述测试为 运行 时,它失败并出现以下错误:
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()
。