Spring boot 不同数据库环境的集成测试

Posted

技术标签:

【中文标题】Spring boot 不同数据库环境的集成测试【英文标题】:Spring boot Integration test with different database environmets 【发布时间】:2018-03-22 13:33:45 【问题描述】:

我有一组 Junit 测试用例。所有测试用例都必须针对不同的数据库环境执行。在 junit 测试中使用 '@RunWith(SpringJUnit4ClassRunner.class)' 时,spring boot 应用程序只启动一次。但是我需要使用不同的配置重新启动应用程序,包括 flyway 迁移和其他与环境相关的 application-.properties 来运行测试。我也尝试过使用参数化测试。在这种情况下,spring 应用程序也只启动一次。有什么方法可以实现吗?

【问题讨论】:

【参考方案1】:

听起来您需要在测试中使用这些注释:

@RunWith(SpringRunner.class)
@SpringBootTest
@Import(MyTestsConfiguration.class)

更多详情请参考 Spring Boot 文档中的this page

【讨论】:

你能说得更具体些吗 @Priya 您是否在每次希望应用程序启动时使用不同的类?添加前两个注释(以及第三个,可选,如果您想覆盖默认配置)应该是您需要做的所有事情。 其实我不是每次都跑不同的班级。类文件对于所有环境都是相同的。在启动 spring boot 应用程序时,我将指定使用特定的配置文件来加载。 我建议您将测试拆分为单独的类。一个 class= 一个应用程序的启动 不会像一次又一次地复制相同的测试用例

以上是关于Spring boot 不同数据库环境的集成测试的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot 集成测试:模拟环境接口

运行 Spring Boot 集成测试时出现 Liquibase 问题

Spring Boot Test 无法使用 JUnit 5 为自定义集成测试源集加载应用程序上下文

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

spring boot 环境配置(profile)切换

spring boot 环境配置(profile)切换