我有这样的XML消息:
<root>
<elementA>something</elementA>
<elementB>something else</elementB>
<elementC>yet another thing</elementC>
</root>
我想将被测试方法产生的这种类型的消息与预期消息进行比较,但是我不在乎
elementA
。因此,我希望以上消息被认为等于:<root>
<elementA>something different</elementA>
<elementB>something else</elementB>
<elementC>yet another thing</elementC>
</root>
我正在使用最新版本的XMLUnit。
我在想答案是创建一个自定义的
DifferenceListener
;如果有准备好要使用的东西,我只是不想重新发明轮子。欢迎使用XMLUnit以外的库的建议。
最佳答案
自从回答了这个问题以来,XMLUnit的情况发生了很大变化。
现在,使用DiffBuilder
时,您可以轻松地忽略节点:
final Diff documentDiff = DiffBuilder
.compare(expectedSource)
.withTest(actualSource)
.withNodeFilter(node -> !node.getNodeName().equals(someName))
.build();
如果再调用
documentDiff.hasDifferences()
,则添加到过滤器的节点将被忽略。