【发布时间】:2021-11-16 15:56:35
【问题描述】:
我维护一个较旧的基于 Spring Boot 的系统,其中底层数据库已初始化,随后使用数据库脚本进行更改。
在某些时候,开发切换到使用 liquibase:实施了一些变更集,现在所有数据库更改都将通过变更集完成。
现在这会引发使用持久层的集成测试的问题,例如 @DataJpaTests 或 @SpringBootTests:liquibase 在启动时尝试应用其变更集。但是由于这些变更集引用了生产数据库中存在的表,但 liquibase 从未创建或修改过这些表,因此 - 当然 - 无法执行更改测试数据库中这些不存在的表的变更集。
这曾经“工作”的唯一原因是因为 - 直到今天 - 从来没有任何 @DataJpaTests 或 @SpringBootTests。
但是,我现在处于一种情况,我非常希望至少允许使用@DataJpaTests。有没有办法在不添加可能影响生产数据库的变更集的情况下做到这一点?
【问题讨论】:
-
DataJpaTests 需要 liquibase 吗?如果没有,请输入
@DataJpaTest(properties={"spring.liquibase.enabled=false"},您就可以开始了。或者只是为该测试创建单独的 liquibase 文件。 -
这是一个很好的观点。我为测试禁用了 liquibase。如果您将此作为答案发布,我会接受。
标签: spring-boot spring-data-jpa integration-testing liquibase