Прежде всего, есть две возможные большие «области», которые могут go ошибаться:
- Настройка теста начальной загрузки
- Интеграция с Kafka
Я полагаю, что вопрос касается первой части, поэтому я сконцентрируюсь на этой части.
Для быстрого ответа: Когда вы добавляете аннотацию @SpringBootTest
, попробуйте использовать ее вообще без параметров. И убедитесь, что тест помещен в правильную упаковку, это важно. Это включит автоматическое c разрешение вашего приложения.
Теперь я попытаюсь кратко объяснить, почему это важно, topi c действительно широкий и глубокий.
- Spring Boot проверяет, существует ли в том же пакете, что и интеграционный тест, класс, аннотированный
@SpringBootConfiguration
(это аннотация, помещенная в @SpringBootApplication
- что, в свою очередь, относится к вашему основному классу) Допустим, com.abc.myapp.test
- это место, где вы положили тест) Если не найдено, он поднимает одну упаковку и проверяет там (com.abc.myapp
). Он будет делать это снова и снова до пакета root, однако предположим, что аннотированный класс @SpringBootApplication
находится в этом пакете. Обратите внимание, если этот рекурсивный «поиск» не находит @SpringBootApplication
аннотированный класс - тест не запускается. Вот почему важно использовать структуру пакетов, предлагаемую приложением весенней загрузки.
Теперь, когда он находит этот класс, он знает, какие пакеты следует сканировать на наличие bean-компонентов для запуска приложения весенней загрузки. Поэтому он пытается найти бины в соответствии с практикой весенней загрузки (пакет com.abc.myapp
и ниже). В этот раз он делает это снова рекурсивно сверху вниз.
Он также запускает ваши стартеры (автоконфигурации) в этом режиме.
Итак, нижняя строка:
Указание @SpringBootTest
без параметров заставляет пружинную загрузку делать все возможное, чтобы имитировать c запуск реального приложения
Если вы используете его с Однако параметры, в которых вы указываете конфигурацию, ведут себя совершенно иначе: все равно, что сказать: «Я знаю, где находятся мои конфигурации, не пытайтесь запустить все, вот моя конфигурация, загружайте только ее».
Совершенно другая вещь, без рекурсивных поисков, без запуска автоконфигураций и т. Д. c.