Мы работаем с большими объемами данных, все помечены в UTC (на Java). Между чтением этих данных, сохранением их в базе данных и их повторным выводом получилось, что некоторые данные были отключены на один час в летнее время. Поскольку UTC не имеет понятия перехода на летнее время, это явно было ошибкой в программном обеспечении. Когда это станет известно, это легко исправить.
Однако было бы неплохо иметь некоторые модульные / интеграционные тесты, которые работают независимо от текущей разницы во времени - например, Я хотел бы изменить местный часовой пояс и запускать несколько методов снова и снова в этих разных часовых поясах, чтобы убедиться, что UTC обрабатывается правильно.
Поскольку тесты должны выполняться автоматически и - предпочтительно - в пределах одного Testsuite, мне интересно, как лучше всего проверить правильность поведения. После перезапуска JVM было бы легко изменить локальные настройки, такие как часовой пояс, но запустить его в тестовом наборе не так просто.
Кто-нибудь знает о тестовой среде, библиотеке или шаблоне, поддерживающем этот сценарий? Обычно мы работаем с JUnit, но открыты для добавления другой среды / техники, если она помогает избавиться от подобных проблем. Я полагаю, что это скорее интеграционный, чем модульный тест.
Редактировать : уже есть два очень полезных ответа, но я думаю, что там должно быть больше техник. Есть ли у кого-нибудь авторитетная информация о том, когда и как часто будет вызываться TimeZone.getDefault (см. Комментарии к ответам Джона Скитса)?
Примечание : Несмотря на то, что на этот вопрос есть принятый ответ, я не был полностью уверен, какой ответ принять. Даже с этим признанием я хотел бы видеть больше идей и методов.
Спасибо за ваш вклад!