如何在 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
测试应该获取两条路径中的所有变更集并且运行
我想要通过 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
测试应该获取两条路径中的所有变更集并且运行