使用带有变量值的XMLUnit测试XML

Xet*_*ius 1 java xmlunit

我有一些我正在测试的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>
Run Code Online (Sandbox Code Playgroud)

我想检查初始元素(核心:日期)是否为日期格式,但这些值与平等目的无关.

谢谢

Jon*_*eet 5

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

事实证明,注入一个时钟对我的经验非常有用 - 而且非常容易.我建议有一个Clock接口,包括SystemClock和(用于生产)和FakeClock(用于测试)的实现.

无论您是以毫秒表示当前时间,Date还是(我的偏好)来自Joda Time的东西,它都是隔离依赖性的好方法.