如何在 springboot 中为集成测试创建 liquibase 变更集?

How to create liquibase changeset for integration tests in springboot?

我想要通过 liquibase 变更集进行集成测试的模拟数据,如何使其不影响真实数据库?我从 here 中找到了部分想法,但我正在使用 springboot,我希望有更简单的解决方案。

您可以使用 liquibase 的上下文参数。例如,创建将从 sql 文件加载插入内容的变更集,并为其指定上下文。像这样:

<changeSet id="test_data_inserts" author="me" context="test">
    <sqlFile path="test_data.sql" relativeToChangelogFile="true" />
</changeSet>

并在 spring 引导程序的 application.properties 中指定 属性 liquibase.contexts=test.

进行测试

假设生产变更集放置在 resources/db/changelog/changes 中,并且 /db/changelog 中有一个 db.changelog-master.yaml,配置如下

databaseChangeLog:
  - includeAll:
      path: db/changelog/changes

将测试变更集放入 test/resources/db/changelog/testchanges 并创建 db.changelog-master.yaml in test/resources/db/changelog 具有以下配置

databaseChangeLog:
  - includeAll:
      path: db/changelog/changes
  - includeAll:
      path: db/changelog/testchanges

测试应该获取两条路径中的所有变更集并且运行