Как стать автором
Обновить

Комментарии 9

Я бы вам посоветовал везде при работе с текущим временем использовать в своем коде класс Clock с возможностью установки и сброса времени руками. Это на порядок удобнее и проще тестировать код. А иначе потом бед не оберетесь. Или вы не для тестирования время меняете? ;)
Можете уточнить, о каком классе вы говорите? Гугль и поиск по классам в IDEA ничего похожего не нашёл.
Он имееет ввиду что в своем коде проще использовать свою обертку над currentTimeMillis, чем городить огород с инструментацией.
Другое дело что если есть сторонний код, который тоже хочется проверить.
К сожалению, в нашем коде используется много библиотек, внутри которых используется new Date(), Calendar.getInstance(), LocalDate.now(). И весь этот зоопарк надо как-то синхронно двигать.
Скоро будет год, как используется это решение. Особых бед замечено пока не было.
Тогда — да. Или виртуалку поднять для тестирования.
Класс, который я вам указал, действительно самописный. Код предельно прост и может быть написан минут за 5 (я могу поделиться нашим классом). Менять дату глобально для тестирования достаточно рискованно, особенно при интеграционном тестировании. Могут задействоваться разные механизмы, которые основаны на устаревании по дате (кеши, работы по расписанию, записи в некоторых ORM), а это приводит к непредсказуемому поведению всей системы. И тогда работоспособность вашего теста не показывает работоспособность системы на живой среде. Но все индивидуально, поэтому ваше решение может для вашего случая работать замечательно. Но глобально я бы не рекомендовал его использовать.
В этом случае, может быть проще использовать JodaTime и через его DateTimeUtils.setCurrentMillisOffset устанавливать время?
Но, как я уже сказал выше, нашему проекту это совершенно никак не может помочь.
На Linux можно проще — с помощью LD_PRELOAD загрузить либу с нужными заглушками. См. например https://github.com/wolfcw/libfaketime Юзал свою поделку (аналогичную libfaketime) в том числе и для Java приложений.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации