Я пытаюсь выполнить простой модульный тест «поток пружины и облака», чтобы проверить проводку между потоками; в основном, обработчик может читать из одного потока и записывать в другой. Эта часть работает нормально. Проблема в том, что другие части приложения также запускаются; а именно, слушатель rabbitMQ. В другом классе есть метод (помимо того, который я тестирую), у которого есть @RabbitListener. Это вызываемый метод. И у меня есть кролик, работающий локально на моей машине, для локального тестирования. Но я не хочу, чтобы это вызывалось в рамках теста.
Тестовые документы Spring-Cloud-Stream здесь пример имеет
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment= SpringBootTest.WebEnvironment.RANDOM_PORT)
Я думаю, что @SpringBootTest запускает всю конфигурацию, включая слушателей RabbitMQ. Я удалил параметр webEnvironment, но это не имело значения.
На данный момент, обходной путь должен поместить spring.rabbitmq.listener.simple.auto-startup: false в application.yml, но это не то, что я хочу продолжить по различным причинам, одной из которых является то, что я, вероятно, хочу модульное тестирование этого кроличьего слизняка в одной точке, хотя и в правильно ограниченном тестовом контексте.
Мы используем версию 2.0.1 поддержки spring-cloud-stream и spring-cloud-stream-test-support, хотя это, кажется, более фундаментальная проблема конфигурации Spring, которую я не понимаю, как ограничить контекст .