Тестирование XML с XMLUnit со значением переменной - PullRequest
1 голос
/ 25 июня 2010

У меня есть какой-то 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) имеет формат даты, но значения не имеют значения для целей равенства.

Спасибо

1 Ответ

5 голосов
/ 25 июня 2010

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

Внедрение часов оказалось действительно полезным в моем опыте - и невероятно простым в выполнении.Я бы порекомендовал иметь интерфейс Clock с реализациями по направлениям SystemClock и (для производства) и FakeClock (для тестирования).

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

...