spring-boot - 具有不完整 liquibase 更改日志的集成测试
问题描述
我维护了一个较旧的基于 Spring Boot 的系统,其中底层数据库已初始化,随后使用数据库脚本进行了更改。
在某些时候,开发切换到使用 liquibase:实现了一些变更集,现在所有数据库更改都将通过变更集完成。
这现在引发了使用持久层的集成测试的问题,例如@DataJpaTests 或@SpringBootTests:liquibase 在启动时尝试应用其变更集。但是由于这些变更集引用了生产数据库中存在的表,但从未由 liquibase 创建或修改,因此 - 当然 - 无法执行更改测试数据库中这些不存在的表的变更集。
这曾经“工作”的唯一原因是因为 - 直到今天 - 从来没有任何 @DataJpaTests 或 @SpringBootTests。
但是,我现在处于非常希望至少允许使用@DataJpaTests 的情况。有没有办法在不添加可能影响生产数据库的变更集的情况下做到这一点?
解决方案
有两种选择:
- 为您禁用 liquibase
@DataJpaTest(properties={"spring.liquibase.enabled=false")
- 为您的测试创建单独的 liquibase 更改日志
推荐阅读
- haskell - 带有集合解析错误的 Haskell 分区?
- django - 解决这个错误:Error loading MySQLdb module: No module named MySQLdb?
- java - 如何使用 Jackson 流 API 将文本解析为 Enum 在运行时因不同枚举类而异?
- laravel - 如何使用 Laravel 设置关系字段的 where 条件?
- android - 尝试扫描条形码时Android应用程序崩溃
- html - getElementByID 返回 null 但 console.log 工作正常
- arrays - 使用嵌套的 JSON 数据渲染反应表
- python - 为什么 PyCharm 不在 HTTPS 中运行烧瓶 webapp?
- ios - 过滤的关系计数未在父视图中更新
- php - 过滤 WP Core 图库块时获取图库标题、图像标题和图库设置