Вступить в клуб →
средняявопросТестирование: JUnit 5, Mockito, Testcontainers

Тест истечения подписки проходит днём и падает в ночь на первое число

public boolean isExpired(Subscription s) {
    return LocalDate.now().isAfter(s.getPaidUntil());
}

Тест создаёт подписку с paidUntil = LocalDate.now() и проверяет, что она ещё не истекла. Иногда он падает — прогон начался в 23:59:59, а проверка выполнилась уже в следующие сутки. Как сделать код тестируемым?

  • Внедрять java.time.Clock и в тестах передавать Clock.fixed
  • Запретить запуск тестов с 23:50 до 00:10
  • Заменить LocalDate.now() на System.currentTimeMillis()
  • Добавить в тест повтор при падении

🔒 Проверка ответа — для участников клуба

  • Проверка ответа
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела