2016-11-03 8 views
0

Я создал простое веб-приложение, следуя книге «Освоение весны MVC». Однако все было хорошо, во время тестовой главы я создал две фасоли с аннотацией @Primary. 1. ProviderSignInController и 2. Impl моего класса службы поиска. Оба они находятся в пакете src/test/java.Как ограничить автосканирование src/test/java в Spring Boot?

Проблема заключается в том, что если я разворачиваю свое приложение, даже тогда эти два компонента попадают в картину, и я не могу работать с моей реальной службой аутентификации и поиска.

У меня нет никакой ошибки или исключения. Я хотел бы знать, что может быть лучшим способом автоматического ввода моих макетов/заглушек во время тестирования и фактических реализаций при развертывании приложения в моей среде разработки.

Ссылка на исходный код: here. Благодарю.

+0

Это означает, что есть ошибка в процессе сборки. Классы из каталога src/test/java не должны включаться в результат цели пакета. Это не произойдет в обычной сборке maven. – DwB

+0

Я использую Gradle. Я проверю это. Я не делал никаких конкретных конфигураций, чтобы избежать тестов. – Yasin

ответ

0

Проблема была в том, как я выполнял приложение.

Когда я запустил приложение непосредственно из eclipse (Run As Spring Boot App), тесты были включены в сборку, как они присутствовали в пути к классам.

Я изменил свой подход, и теперь я использую функцию gradle build (gradle bootRun) для запуска моего приложения. Это решает проблему. Спасибо @DwB за подсказку.

1

Вместо @Primary, я предлагаю использовать @Profile("PRODUCTION") вдоль стороны @Bean для реальных/производства фасоли/классов & @Profile("!PRODUCTION") с тестом-бобами/классами. Затем указать активный профиль (ы) во время выполнения

-Dspring.profiles.active=PRODUCTION, ...