Java 有没有办法使用Spring引导、Liquibase和sql脚本进行集成测试?
我使用liquibase设置数据库模式。我禁用hibernate来创建任何东西。因此,我的import.sql被忽略。有没有办法配置spring boot或liquibase或任何其他部件,以便在liquibase创建表后加载测试数据?如果您需要一些原始的东西(即,不用于实际的数据迁移),可以使用。简而言之,您需要:Java 有没有办法使用Spring引导、Liquibase和sql脚本进行集成测试?,java,spring,hibernate,spring-boot,liquibase,Java,Spring,Hibernate,Spring Boot,Liquibase,我使用liquibase设置数据库模式。我禁用hibernate来创建任何东西。因此,我的import.sql被忽略。有没有办法配置spring boot或liquibase或任何其他部件,以便在liquibase创建表后加载测试数据?如果您需要一些原始的东西(即,不用于实际的数据迁移),可以使用。简而言之,您需要: 创建一个data test.sql来加载数据,并将其放在src/main/resources目录中。对于不同的环境,只需使用命名约定data-{platform}.sql 将应用程
data test.sql
来加载数据,并将其放在src/main/resources
目录中。对于不同的环境,只需使用命名约定data-{platform}.sql
应用程序测试属性
添加到src/main/resources
中,如下所示:
spring.datasource.platform=test#这会激活上面的data-test.sql
spring.datasource.continueOnError=取决于你的需要
应用程序测试.properties
,请确保“test”是集成测试期间激活的配置文件之一。一种方法是使用@ActiveProfiles({“test”,…})
注释测试类李>
最简单的方法似乎是使用liquibase加载数据。您可以使用普通的变更集(XML或JSON)或。
最常见的方法是加载或运行现有的。如果您使用JUnit并且所有测试都有一个基类,那么您可以在基类中使用
EntityManager
在之前(或@BeforeClass
之前,视情况而定)注释一个方法。首先获得JDBC连接
作为entityManager.unwrap(Connection.class)
(仅适用于JPA2.0+)。然后使用描述的类加载并运行所需的SQL脚本。这并不能回答问题。此解决方案仅在不使用Flyway或Liquibase时有效。问题是如何在SpringBoot中运行Liquibase之后运行sql脚本。Spring Boot关闭Spring JDBC初始值设定项如果您在Spring Boot中使用Liquibase或Flyway,您可以使用Liquibase加载数据,但是当您使用Spring Boot和Liquibase并且您想要创建具有预填充测试数据的集成测试时,仅使用Liquibase加载数据甚至不是一个选项。我有一个10MB的sql文件,其中包含测试需要插入的示例数据,我没有将其输入到变更集中。@user1567291查看扩展答案。