【问题标题】:How to initialize database before hibernate autogeneration in a Spring JUnit Test?如何在 Spring JUnit 测试中的休眠自动生成之前初始化数据库?
【发布时间】:2018-07-23 13:20:00
【问题描述】:

我正在使用spring-boot-test 进行一些集成测试(weblayer + 数据库)。由于我的域类是@Entity,所以hibernate会自动生成testdb中的数据库,即嵌入h2

问题:如何在测试中任何 hibernate/jpa 初始化之前运行 sql 脚本?

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public void MyITest {
    @Test
    public void test() {
    }
}

我添加了一个src/test/resources/schema-test.sql,但默认情况下似乎没有被选中。尤其是在hibernate autogeneration stuf之前..

【问题讨论】:

    标签: java spring hibernate spring-boot spring-test


    【解决方案1】:

    我只需要使用src/test/resources/schema.sql

    【讨论】:

      【解决方案2】:

      您可以使用 @Sql 并设置脚本的路径

      @Test
      @Sql({"/test-schema.sql", "/test-user-data.sql"})
      public void userTest {
          // execute code that relies on the test schema and test data
      }
      

      完整信息SPRING TEST Database

      【讨论】:

      • 我需要架构初始化之前任何休眠自动生成发生。因此@Sql 为时已晚......它在所有初始化发生后执行。
      猜你喜欢
      • 2016-11-10
      • 1970-01-01
      • 1970-01-01
      • 2015-09-06
      • 2011-07-27
      • 2020-08-30
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多