Spring JUnit 测试中如何在休眠自动生成之前初始化数据库?

How to initialize database before hibernate autogeneration in a Spring JUnit Test?

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

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

@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 之前..

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

您可以使用 @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