Здесь есть много вещей, которые нужно проверить, это зависит от того, как вы запускаете тесты.
Могут учитываться следующие факторы:
Поскольку вы пометили «maven» в вопросе: надежные / отказоустойчивые плагины Maven, отвечающие за запуск тестов, могут одновременно запускать несколько тестов в одной или нескольких JVM, все зависит от их конфигурации.
Таким образом, тесты могут периодически давать сбои во время сборки, даже если они проходят локально.
@Before
и @After
вызываются до и после каждого теста в тестовом примере соответственно. @After
вызывается, даже если тест не пройден. Так что, вероятно, запоминание часового пояса по умолчанию и его установка после теста должны быть в порядке, но не «переустановка» состояния в блоке «@After» может привести к неправильным определениям в последующих тестах.
Лучшим подходом ИМХО является использование java.time.Clock
абстракции. См. этот вопрос для примеров
Другой возможный вариант - рефакторинг кода для использования некоторой «фабрики» для предоставления текущей даты / времени. Затем в модульном тесте вы можете создать экземпляр этой фабрики и «внедрить» ее в качестве зависимости в тестируемый код. Своего рода часы ручной работы