使用Spring Boot进行集成测试

时间:2017-08-23 12:49:51

标签: java spring spring-boot jdbc continuous-integration

我有什么: 我正在使用Spring Boot with Web和SpringMyBatis开发微服务。 对于CI集成测试,我将使用远程MySQL数据库,对于本地集成测试,我将使用H2。我为这两个数据库提供了不同的application.yml文件。

我的问题: 因为我想创建将在两个数据库上运行的集成测试,并且我将不得不使用不同的JDBC驱动程序(我的测试将直接检查数据库插入/修改的内容),最好的方法是什么要做到这一点? 可能是使用Spring JDBC查询我的数据库的解决方案,以便我的数据源将被选中"直接从应用程序属性?

2 个答案:

答案 0 :(得分:1)

正如我所提到的,使用弹簧轮廓是件好事。定义2个用@Profile("dev")@Profile("qa")注释的DataSource,并指定所需的驱动程序/连接URL /凭证。

请参阅the example(您需要的不同数据源)和/或the example以获取更多信息

答案 1 :(得分:0)

Spring Boot支持为不同的环境加载不同的属性文件。只需创建一个合适的application-<profile>.properties(或.yml,Spring Boot将加载适当的。{/ p>

例如,在application-qa.properties中指定以下内容

spring.datasource.url=jdbc:mysql:<remote-host>/db
spring.datasource.username=<username>
spring.datasource.password=<password>

如果你想在其他任何地方使用嵌入式H2,你可以省略配置,就像H2在类路径上一样,Spring Boot会自动为你配置一个内存H2。

现在,当运行集成测试时,将qa指定为活动配置文件,您将自动连接到已配置的数据源。您可以使用Maven配置文件选择活动的Spring配置文件。

您的配置中不需要多个DataSource bean,因为Spring Boot只会配置1个请求的bean。