Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 有没有办法使用Spring引导、Liquibase和sql脚本进行集成测试?_Java_Spring_Hibernate_Spring Boot_Liquibase - Fatal编程技术网

Java 有没有办法使用Spring引导、Liquibase和sql脚本进行集成测试?

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 将应用程

我使用liquibase设置数据库模式。我禁用hibernate来创建任何东西。因此,我的import.sql被忽略。有没有办法配置spring boot或liquibase或任何其他部件,以便在liquibase创建表后加载测试数据?

如果您需要一些原始的东西(即,不用于实际的数据迁移),可以使用。简而言之,您需要:

  • 创建一个
    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查看扩展答案。