通过Eclipse运行Spring Boot应用程序可以选择测试类

时间:2015-11-14 11:23:50

标签: java eclipse spring-boot gradle-eclipse

我正在使用带有Gradle插件的STS开发Spring Boot应用程序。 我有一个不同的测试配置,以防止我们的Selenium测试必须登录。

所以在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视图中运行/调试按钮)然后应用测试配置,因此无需登录即可访问所有页面。

当我以这种方式启动应用程序时,我猜测测试类是否包含在类路径中。 有没有一种简单的方法可以防止这种情况发生?

2 个答案:

答案 0 :(得分:2)

当你从eclipse运行测试时,类路径是由eclipse(而不是maven或gradle)准备的。

Eclipse每个项目只使用一个类路径,并且不了解依赖项范围(例如' compile'或' test')。 因此,类路径始终包含引用项目的任何资源。

你无法改变eclipse的这种行为。 您需要使用命名约定,配置文件等,以避免意外使用测试资源。

答案 1 :(得分:0)

您可以将@TestComponent附加到测试配置类。在应用程序的组件扫描期间将跳过这些bean配置。根据组件扫描配置,您需要定义@ComponentScan排除过滤器: excludeFilters = @ComponentScan.Filter(value = TestComponent.class, type = FilterType.ANNOTATION))