Joh*_*y19 6 spring integration-testing flyway
我正在使用Flyway来处理数据库迁移.一切正常:迁移文件的默认位置是:
main/resource/db/migration/V1...
Run Code Online (Sandbox Code Playgroud)
我正在运行集成测试,我的设置使用单独的数据库模式进行集成,我也想用flyway管理它.但是,集成测试位于test
文件夹中(不是main
).当Flyway bean执行时migrate()
,它找不到迁移文件,因为它们位于main
文件夹中.如果我将迁移文件放入其中test/resource/db/migration/V1...
就可以了.
我真的不想将这些文件复制到test
资源文件夹中,所以我不必同时维护它们.有没有办法强制Flyway使用与普通应用程序相同的迁移文件进行集成测试?
另一个提示:对于数据库单元测试,您还可以使用Flyway测试扩展,请参阅https://github.com/flyway/flyway-test-extensions.
这些扩展还有一个用于数据加载的DbUnit集成插件,因此您可以控制测试环境中的数据库设置.
Adams的回答是正确的,不要将真正的数据库设置脚本复制到test/resources/db/migration/
.
对于集成测试设置,您还可以执行以下选项中的一个或组合:
flyway-maven-plugin
或gradle设置,test/resources/integration/migration/
为脚本位置添加特殊文件夹.test/resources/db/migration/
并使用特殊版本,如V999.0.x__或simular.在这种情况下,flyway将始终填充数据库中所有检测到的脚本.数据库集成测试提示:
我假设您正在使用Maven?单元测试都test/resources
和main/resources
得到加载到类路径中。test/resources
文件通常优先,因为它们放在类路径中的较高位置(如果我没记错的话)。无论如何,我不建议您这样做。
相反,我建议您对集成测试进行完全不同的Flyway配置,该配置位于单独的目录(即test/resources/integration/migration/
)中,并在main/resources/db/migration
默认目录之后运行。
即使这样,不使用Flyway来设置集成数据固定装置,而使用其他一些数据库数据加载工具(如DbUnit)(我敢肯定还有其他工具)可能会更容易。
归档时间: |
|
查看次数: |
16413 次 |
最近记录: |