Как использовать @TestConfiguration, чтобы избежать сканирования src / test / java? - PullRequest
2 голосов
/ 15 мая 2019

Согласно 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;лучше запустить тестовый класс.

...