Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

EasyJava - Java в примерах для начинающих


Как сделать тесты JodaTime переносимыми

 Многие функции  оперируют с текущим временным поясом. Это хорошо и для приложения, которое автоматически работает с временем корректно и для разработчика, которому не надо писать эту корректность. Но в юнит-тестах “текущий” временной пояс является неопределённым параметром окружения и может вызывать проблемы.

Например у разработчика, находящегося в зоне UTC+3, такой тест отлично отработает:

Однако, когда он его загрузит на CI сервер находящийся в зоне UTC+4, тест сломается:

Чтобы избежать обвинений в сломанном билде, разработчику достаточно будет зафиксировать в тесте временной пояс по умолчанию:

DateTimeZone.setDefault()  меняет временной пояс по умолчанию только для JodaTime объектов, не затрагивая временной пояс всей jvm.


В избранное