Я разрабатываю приложение Spring Boot, используя STS с плагином Gradle. У меня есть другая конфигурация для тестов, чтобы наши тесты Selenium не зависли.Запуск приложения Spring Boot через Eclipse выбирает классы тестов
Так в src/test/java/etc
у меня есть что-то вроде этого:
@Configuration
@EnableGlobalMethodSecurity(prePostEnabled = true)
@EnableWebSecurity
public static class SecurityConfig extends WebSecurityConfigurerAdapter
{
@Override
protected void configure(HttpSecurity http) throws Exception
{
http.authorizeRequests().anyRequest().permitAll();
}
}
Если в src/main/java
у меня есть эквивалентный класс, настраивающий вход в систему и т.д., требующий вход для всех страниц.
Если я запускаю приложение через плагин Gradle (bootRun), все работает нормально.
Однако, если я запустил или отлаживал его через Eclipse напрямую (например, щелкнув правой кнопкой мыши по проекту, запустив As-> Spring Boot App или нажав кнопки запуска/отладки в представлении Spring или Java), тогда тестовая конфигурация , поэтому доступ предоставляется всем страницам без входа.
Я предполагаю, что тестовые классы включены в путь класса, когда я запускаю приложение таким образом. Есть ли простой способ предотвратить это?
Я мог представить, что вы могли бы обходным путем, добавив '@Profile (" test ")' этому классу + '@ActiveProfiles (" test ")' на тест. Это сделало бы bean condinional для этого профиля. См. Http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#testcontext-ctx-management-env-profiles – zapl
Похож на хорошее потенциальное решение, хотя даже после того, как я добавил @profile («test») в тестовый конфигурационный класс, он все еще используется, когда я запускаю приложение. Я исследую это позже - спасибо. –
Я могу подтвердить, что проблема почти наверняка заключается в том, что путь к классу runtime включает в себя «тестовые» вещи. Это своего рода известная проблема, хотя я не думаю, что для нее есть билет с вопросом. Это проблема, вызванная моделью инструментальной модели gradle, не отличающейся между классами «test» и «runtime». Я боюсь, что самый простой способ избежать этой проблемы - переключиться на использование maven. Я знаю, что m2e/maven делает это правильно. – Kris