我正在使用Flyway来处理数据库迁移.一切正常:迁移文件的默认位置是:
main/resource/db/migration/V1...
我正在运行集成测试,我的设置使用单独的数据库模式进行集成,我也想用flyway管理它.
但是,集成测试位于测试文件夹(不是主文件夹)中.当Flyway bean执行migrate()时,它找不到迁移文件,因为它们位于主文件夹中.如果我将迁移文件放在test / resource / db / migration / V1中……它可以工作.
我真的不想将这些文件复制到测试资源文件夹中,所以我不必同时维护它们.有没有办法强制Flyway使用与普通应用程序相同的迁移文件进行集成测试?
最佳答案
我假设你正在使用Maven?对于单元测试,test / resources和main / resources都会加载到类路径中.测试/资源文件通常优先,因为它们被放置在类路径中更高的位置 – 如果我没记错的话.无论如何,我不建议你这样做.
原文链接:https://www.f2er.com/spring/431690.html相反,我建议你在一个单独的目录(即test / resources / integration / migration /)中为集成测试制作一个完全不同的Flyway配置,并在main / resources / db / migration默认目录之后运行.
即使这样,也可能更容易不使用Flyway来设置集成数据夹具,而是使用其他一些数据库数据加载工具,如DbUnit(我确定还有其他工具).