首页 > 解决方案 > 具有不完整 liquibase 更改日志的集成测试

问题描述

我维护了一个较旧的基于 Spring Boot 的系统,其中底层数据库已初始化,随后使用数据库脚本进行了更改。

在某些时候,开发切换到使用 liquibase:实现了一些变更集,现在所有数据库更改都将通过变更集完成。

这现在引发了使用持久层的集成测试的问题,例如@DataJpaTests 或@SpringBootTests:liquibase 在启动时尝试应用其变更集。但是由于这些变更集引用了生产数据库中存在的表,但从未由 liquibase 创建或修改,因此 - 当然 - 无法执行更改测试数据库中这些不存在的表的变更集。

这曾经“工作”的唯一原因是因为 - 直到今天 - 从来没有任何 @DataJpaTests 或 @SpringBootTests。

但是,我现在处于非常希望至少允许使用@DataJpaTests 的情况。有没有办法在不添加可能影响生产数据库的变更集的情况下做到这一点?

标签: spring-bootspring-data-jpaintegration-testingliquibase

解决方案


有两种选择:

  1. 为您禁用 liquibase@DataJpaTest(properties={"spring.liquibase.enabled=false")
  2. 为您的测试创建单独的 liquibase 更改日志

推荐阅读