У меня есть приложение, которое использует тему Kafka с помощью @KafkaListener, сохраняет некоторые данные на Redis и отправляет ответ на другую тему.Я должен построить интеграционные тесты на нем.Поэтому я должен отправить сообщение по теме 1, дождаться ответа в теме 2 и прочитать некоторые данные из Redis.
Запустить приложение напрямую и отправить некоторые сообщения Kafka через CLI было достаточно для успешной проверки того, что я хотел.Когда я попытался сделать то же самое с JUnit, я заметил, что приложение умерло до того, как его слушатель смог прочитать сообщения, вставленные в тестах.Использование точек останова было достаточно для достижения того же поведения.
Я пытался использовать Thread.sleep, но он не представил никаких изменений поведения, и я не знаю почему.Тест выполняется с тем же потоком приложения?Я также подумал о CountDownLatch
, но, поскольку в моем приложении нет конструкторов с этим объектом, я не могу его изменить.
Как мне увеличить время контекста приложения до того, как тест завершится хотя бы достаточно долго, чтобы иметь некоторыеасинхронный метод называется?