使用不完整的 liquibase 变更日志进行集成测试
Integration tests with incomplete liquibase changelogs
我维护一个较旧的、spring 基于引导的系统,其中底层数据库已初始化,随后使用数据库脚本进行了更改。
在某些时候,开发切换到使用 liquibase:实施了一些变更集,现在所有数据库更改都将通过变更集完成。
这现在引发了使用持久层的集成测试的问题,例如@DataJpaTests 或@SpringBootTests:liquibase 在启动时尝试应用其变更集。但是,由于这些变更集引用了生产数据库中存在的表,但 liquibase 从未创建或修改过这些表,因此 - 当然 - 无法执行更改测试数据库中这些不存在的表的变更集。
这曾经“有效”的唯一原因是 - 直到今天 - 从来没有任何@DataJpaTests 或@SpringBootTests。
但是,我现在的情况是,我非常希望至少允许使用@DataJpaTests。有没有什么方法可以在不添加可能影响生产数据库的变更集的情况下做到这一点?
有两种选择:
- 为您的
@DataJpaTest(properties={"spring.liquibase.enabled=false")
禁用 liquibase
- 为您的测试创建单独的 liquibase 变更日志
我维护一个较旧的、spring 基于引导的系统,其中底层数据库已初始化,随后使用数据库脚本进行了更改。
在某些时候,开发切换到使用 liquibase:实施了一些变更集,现在所有数据库更改都将通过变更集完成。
这现在引发了使用持久层的集成测试的问题,例如@DataJpaTests 或@SpringBootTests:liquibase 在启动时尝试应用其变更集。但是,由于这些变更集引用了生产数据库中存在的表,但 liquibase 从未创建或修改过这些表,因此 - 当然 - 无法执行更改测试数据库中这些不存在的表的变更集。
这曾经“有效”的唯一原因是 - 直到今天 - 从来没有任何@DataJpaTests 或@SpringBootTests。
但是,我现在的情况是,我非常希望至少允许使用@DataJpaTests。有没有什么方法可以在不添加可能影响生产数据库的变更集的情况下做到这一点?
有两种选择:
- 为您的
@DataJpaTest(properties={"spring.liquibase.enabled=false")
禁用 liquibase
- 为您的测试创建单独的 liquibase 变更日志