【问题标题】:Ignore all elements not present in the test XML with XMLUnit使用 XMLUnit 忽略测试 XML 中不存在的所有元素
【发布时间】:2017-06-15 19:16:56
【问题描述】:

在 XMLUnit 2.x 中,我是否可以忽略实际(“控制”)XML 中不存在于我的测试(“预期”)XML 中的所有元素?

示例:

实际:

<a>123</a>
<b>456</b>
<c>789</c>

测试:

<b>456</b>
<c>xxx</c>

我想检测 &lt;c&gt; 中的差异,但完全忽略 &lt;a&gt; 标记,因为它不存在于测试 XML 中。

我的想法是我想要比较一个很大的 XML,但我只对元素的一个子集感兴趣,我不想给 XMLUnit 一个仍然很大的元素名称列表以忽略或不忽略。

【问题讨论】:

    标签: java xml xmlunit xmlunit-2


    【解决方案1】:

    您可以在所有CHILD_NODELIST_LENGTHCHILD_LOOKUP 比较中使用自己的DifferenceEvaluator 并返回ComparisonResult.SIMILAR(甚至EQUAL)。

    如果您只想忽略测试文档中添加的元素(而不是忽略不存在于与方向无关的另一侧的所有元素),那么只有在控制长度大于测试长度且CHILD_LOOKUPs 在测试端缺少节点。

    【讨论】:

    • 谢谢!为了完全满足我的要求,我需要添加一些逻辑:对于CHILD_NODELIST_LENGTH,只忽略控制长度大于测试长度的情况;对于CHILD_LOOKUP,仅当 control 不为 null 且 test 为 null 时才忽略。如果您将此添加到您的答案中,我会接受。
    猜你喜欢
    • 2017-02-03
    • 2020-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多