java.time
Вы используете ужасные классы даты и времени, которые были вытеснены несколько лет назад современными java.time классами, определенными в JSR 310.
Clock
Классы java.time принимают необязательный аргумент Clock
.Передайте объект Clock
с поведением, необходимым для вашего теста.Класс Clock
имеет статические методы, обеспечивающие несколько специальных поведений.К ним относятся фиксированный момент, скользящий момент, установленный на определенное количество времени впереди или позади истинных часов, и измененная частота, например, увеличение на целые минуты.
Об этом уже много раз говорилось о переполнении стека.Поиск, чтобы узнать больше.
LocalDate ld = LocalDate.of( 2019 , Month.APRIL , 30 ) ;
ZoneId z = ZoneId.of( "America/Edmonton" ) ;
ZonedDateTime zdt = ld.atStartOfDay( z ) ;
Instant instant = zdt.toInstant() ;
Clock clock = Clock.fixed( instant , z ) ;
Теперь добавьте этот clock
объект в ваши тесты.
ZonedDateTime zdt = ZonedDateTime.now( clock ) ;
Если вы хотите настоящие часы, используйте:
Clock clock = Clock.system( z ) ;