我如何用Junit以正确的方式实现Flyway?
我将Flyway添加到我的项目中,并将V1__init.sql(例如)放入**main**/resources/db/migration
目录中。只要我调试代码(启动时不进行测试),它就可以工作。
我是否也必须将*.sql
文件复制到**test**/resources/db/migration
目录中?
我还希望,测试是针对另一个数据库而不是测试数据库进行的。我是否正确,我必须在test
文件夹下添加另一个application.properties
文件,我在其中放置了构建数据库的凭据(测试运行的位置?)。
如果有人能帮助我了解如何正确配置它,我会非常高兴。
1条答案
按热度按时间u1ehiz5o1#
您可以将迁移文件保留在src下,而不需要将它们复制到您的test文件夹中。它们将在运行
@SpringBootTest
时使用。此外,您不一定需要一个单独的属性文件来进行测试,但您可以有一个。
以下是使用
TestContainers
进行IntegrationTesting的示例,该示例使用application.properties
和Flyway迁移,以使测试的行为与您正常运行应用程序时的行为相同。这是一个抽象类,它确保测试在整个Spring上下文中运行,因此也涉及到
Flyway
。在初始化程序中,数据源配置属性被来自TestContainers
数据库的属性覆盖。这样做时,您直接使用真实的的application.properties
并模拟一点真实的;))现在您可以定义几个测试类,如下所示:
当在该类中运行测试时,SpringBoot应用程序启动并使用
TestContainers
数据库。出于我的目的,我还实现了一个简单的注解:
编码
使用注解,您可以为SQL提供例如用于测试的样本数据。
pom.xml文件
这应该是MySql的依赖项