使用多种数据库类型的Spring Boot集成测试

时间:2018-05-08 18:55:37

标签: java spring spring-boot testing integration-testing

在我的测试中,我需要使用不同的数据库(mysql,oracle等)进行测试,我想知道是否可以使用SpringRunner。

我正在使用@SqlGroup和@Sql注释,但我没有发现如何指示脚本文件(sql)对应的数据库。

示例:

@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:tenantBeforeTestRun.sql")

此批注将我的测试配置为对所有数据库类型执行脚本,但此文件在Oracle上不起作用。

1 个答案:

答案 0 :(得分:2)

@Sql注释允许您定义包含SqlConfig bean名称的datasource。 然后你可以定义许多数据源bean,可能有不同的驱动程序,并从不同的@Sql引用它们。这可能会有所帮助:Spring Boot Multiple Datasource

@Sql(..., config = @SqlConfig(datasource = "db1", ...)

application.properties:

#first db
spring.db1.url = [url]
spring.db1.username = [username]
spring.db1.password = [password]
spring.db1.driverClassName = oracle.jdbc.OracleDriver

#second db ...
spring.secondDatasource.url = [url]
spring.secondDatasource.username = [username]
spring.secondDatasource.password = [password]
spring.secondDatasource.driverClassName = oracle.jdbc.OracleDriver

然后,@Configuration课程中的某个地方:

@Bean(name = "db1")
@ConfigurationProperties(prefix="spring.db1")
public DataSource secondaryDataSource() {
    return DataSourceBuilder.create().build();
}