【问题标题】:Testing XML with XMLUnit with a variable value使用带有变量值的 XMLUnit 测试 XML
【发布时间】:2010-06-24 21:34:58
【问题描述】:

我有一些我正在测试的 XML,它已将日期和时间设置为其元素之一。这显然会在每次运行测试时发生变化。

有没有办法比较 XML 并忽略这个节点值,或者只是用正则表达式或其他东西检查。

我正在测试的XML如下:

<xml-fragment>
    <core:date xmlns:core="http://www.company.com/commerce/common/V1/core">2010-06-24T21:41:22.456+01:00</core:date>
    <core:serviceName xmlns:core="http://www.company.com/commerce/common/V1/core">calculateNextAndFuturePayments
    </core:serviceName>
    <core:ackRequired xmlns:core="http://www.company.com/commerce/common/V1/core">false</core:ackRequired>
    <v1:viewingCardNumber xmlns:v1="http://www.company.com/commerce/calculateNextAndFuturePayment/V1">405536053
    </v1:viewingCardNumber>
</xml-fragment>

我想检查初始元素 (core:date) 是否采用日期格式,但这些值与相等目的无关。

谢谢

【问题讨论】:

标签: java xmlunit


【解决方案1】:

所以您在代码中生成 XML,但使用 new Date() 之类的东西来获取当前日期/时间?我建议您将时钟作为依赖项注入,就像任何其他依赖项一样。这样,您就可以控制您的代码认为“现在”的时间,并有可预测的 XML 进行测试。

根据我的经验,注入时钟已被证明非常有用 - 并且非常容易做到。我建议有一个Clock 接口,其实现类似于SystemClock 和(用于生产)和FakeClock(用于测试)。

无论您以毫秒、Date 或(我的偏好)来自 Joda Time 的内容表示当前时间,这都是隔离依赖关系的好方法。

【讨论】:

    猜你喜欢
    • 2017-06-15
    • 1970-01-01
    • 2018-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多