Как я могу проверить, что два объекта Joda-Time DateTime почти равны? - PullRequest
3 голосов
/ 26 января 2011

В модульных тестах у меня часто есть методы, которые возвращают DateTime или около now().Есть ли способ сказать, что actual DateTime находится в течение нескольких секунд от actual DateTime?

Ответы [ 2 ]

6 голосов
/ 27 января 2011

Звучит как плохая идея. Модульные тесты никоим образом не должны зависеть от реального текущего времени ... вот почему рекомендуется вставлять некоторый интерфейс, называемый, возможно, Clock, в конструкторы вашего класса и использовать его в качестве источника для текущего времени. Затем в своих модульных тестах вы можете использовать специальную реализацию того, для которого вы можете контролировать время, которое он возвращает, что делает ваши тесты детерминированными.

Тем не менее, я уверен, что вы могли бы легко написать метод, который проверяет, что DateTime находится в определенном диапазоне другого DateTime, создавая новые DateTime s, добавляя и вычитая желаемое количество секунд и затем сравнение.

2 голосов
/ 27 января 2011

Оказывается, с Joda Time это довольно просто:

Duration dur = new Duration(sender.getStartTime(), new DateTime());
assertTrue(5000 > dur.getMillis());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...