Согласно 25.3.3.Исключая тестовую конфигурацию эта возможность существует:
При помещении в класс верхнего уровня @TestConfiguration указывает, что классы в src / test / java не должны выбираться при сканировании
Я создал @Configuration FilledWithBeanTestConfig
и @TestConfiguration DummyTestConfig
в корневом пути / пакете проекта src/test/java/com/example/mvctries/
.Мой класс main
, содержащий метод, специально с аннотацией @ComponentScan
только для того, чтобы случайно выбрать FilledWithBeanTestConfig
;Об этой ситуации Spring специально предупреждает:
Если ваше приложение использует компонентное сканирование (например, если вы используете @SpringBootApplication или @ComponentScan), вы можете найти классы конфигурации верхнего уровня, которые вы создали только дляконкретные тесты случайно попадают повсюду.
Я использовал @Import(DummyTestConfig.class)
в @WebMvcTest
аннотированном классе тестов, помещенном в src/test/java/com/example/mvctries/controller/
;Я ожидал, что @Configuration FilledWithBeanTestConfig
просто проигнорируют, но это не так.Перемещение DummyTestConfig
в src/test/java/com/example/mvctries/controller/
также не помогло.
Что я делаю не так, когда тестирую описанный выше способ src/test/java
игнорирования сканирования?
Как правильно использовать @TestConfiguration
, чтобы использовать эту src/test/java
возможность игнорирования сканирования?
Как бы я протестировал эту возможность, используя @SpringBootApplication
компонентное сканирование только вместо при целевом сканировании с @ComponentScan
?
Хотя приведенные выше вопросы могут показаться слишком многочисленными, на самом деле они представляют собой еще один способ задать следующий один вопрос : как создать проект, который четко доказывает, как использование @TestConfiguration
приводит к классы в src / test / java не должны выбираться сканированием .
ОБНОВЛЕНИЕ
Вот пример проекта: https://github.com/adrhc/spring-boot-test-checks.git; при запуске приложения используется порт 8083;лучше запустить тестовый класс.