Чтобы проверить временный код, полезно использовать шаблон виртуальных часов
Идея состоит в том, что мы вытягиваем текущее время, не используя new Date
, а из часов, которые можно высмеять с помощью виртуальных часов, возвращающих предопределенное фиксированное время.
Теперь в Java есть JodaTime с классом DateTime
и который позволяет установить время выборки с помощью
DateTimeUtils.setCurrentMillisFixed(today.getMillis());
И reset фиксированное время для системного времени с помощью:
DateTimeUtils.setCurrentMillisSystem();
Вот хорошая статья о том, как использовать его с TestNG.
Теперь вопрос!
Насколько безопасно использовать этот метод с помощью методов setUp и tearDown, если он глобально устанавливает фиксированное время в глобальном контексте на время выполнения теста. Пока я получаю это - он будет работать только до тех пор, пока у нас не будет двух параллельных тестов, когда этот метод будет работать в одной и той же среде параллельно.