Тестирование XML с помощью 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>

Я хотел бы проверить, что начальный элемент (ядро: дата) имеет формат даты, но значения не имеют значения для целей равенства.

Спасибо


person Xetius    schedule 24.06.2010    source источник
comment
См. stackoverflow.com/questions/1241593/   -  person Alex B    schedule 14.05.2011


Ответы (1)


Итак, вы создаете XML в своем коде, но используете что-то вроде new Date() для получения текущей даты/времени? Я предлагаю вам внедрить часы в качестве зависимости, как и любую другую зависимость. Таким образом, вы можете контролировать, какое время ваш код считает «сейчас», и иметь предсказуемый XML для тестирования.

По моему опыту, внедрение часов оказалось действительно полезным — и это невероятно легко сделать. Я бы порекомендовал иметь интерфейс Clock с реализациями в духе SystemClock и (для производства) и FakeClock (для тестирования).

Независимо от того, выражаете ли вы текущее время в миллисекундах, Date или (мое предпочтение) в чем-то из Joda Time, это хороший способ изолировать зависимость.

person Jon Skeet    schedule 24.06.2010