我正在构建一个由 Postgres 支持的 Spring Boot 应用程序,使用 Flyway 进行数据库迁移。我一直遇到无法在 Postgres 和嵌入式单元测试数据库(即使启用了 Postgres 兼容模式)中生成所需结果的迁移的问题。所以我正在考虑使用嵌入式 Postgres 进行单元测试。
我遇到了 一个看起来很有前途的嵌入式 postgres 实现,但并没有真正了解如何将其设置为仅在 Spring Boot 的单元测试框架中运行(用于测试 Spring Data 存储库)。如何使用上述工具或 Postgres 的替代嵌入式版本进行设置?
原文由 SingleShot 发布,翻译遵循 CC BY-SA 4.0 许可协议
我是@MartinVolejnik 提到的 Embedded-database-spring-test 库的作者。我认为该库应该满足您的所有需求(PostgreSQL + Spring Boot + Flyway + 集成测试)。很抱歉给您带来了麻烦,所以我创建了一个 简单的演示应用程序,演示了该库与 Spring Boot 框架的使用。下面我总结了一些你需要做的基本步骤。
Maven配置
添加以下 Maven 依赖项:
飞路配置
将以下属性添加到您的应用程序配置中:
此外,请确保您不使用
org.flywaydb.test.junit.FlywayTestExecutionListener
。因为库有自己的测试执行侦听器,可以优化数据库初始化,如果应用FlywayTestExecutionListener
,这种优化没有效果。例子
演示嵌入式数据库使用的测试类示例: