Spring启动集成测试

时间:2017-01-05 20:24:23

标签: spring spring-boot

我目前正在使用spring boot进行应用程序开发。在这种情况下,它会自动配置大多数bean,包括数据源。但是我需要自定义数据源配置,因此创建了一个新的DatabaseConfig,如下所示。

@Configuration
public class DatabaseConfig {

  @Bean
    public DataSource dataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.url(...);
        dataSourceBuilder.username(...);
        dataSourceBuilder.password(...);
        dataSourceBuilder.driverClassName(...);
        return dataSourceBuilder.build();

    }
}

这很好用。

现在我有一个spring mvc Integration测试来测试其余的端点。运行测试时我需要忽略上面的数据库配置,以便spring boot auto配置嵌入式数据源(HSQL db在类路径上)

我怎样才能做到这一点?

2 个答案:

答案 0 :(得分:3)

您可以为每个数据库创建第二个数据库并设置配置文件。在运行测试时,您只需要在Test类上面写@ActiveProfile("nameOfProfile")。例如:

@Bean
@Profile("One")
    public DataSource dataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.url(...);
        dataSourceBuilder.username(...);
        dataSourceBuilder.password(...);
        dataSourceBuilder.driverClassName(...);
        return dataSourceBuilder.build();
@Bean
@Profile("Two")
    public DataSource dataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.url(...);
        dataSourceBuilder.username(...);
        dataSourceBuilder.password(...);
        dataSourceBuilder.driverClassName(...);
        return dataSourceBuilder.build();

@SpringBootTest
@ActiveProfile("Two")
public class Test{
}

答案 1 :(得分:0)

您可以为测试创建数据库配置并将测试bean注释为主要:

@Configuration
public class TestDatabaseConfig {

    @Bean
    @Primary
    public DataSource dataSource() {
        DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();
        dataSourceBuilder.url(...);
        dataSourceBuilder.username(...);
        dataSourceBuilder.password(...);
        dataSourceBuilder.driverClassName(...);
        return dataSourceBuilder.build();

    }
}