如何在没有嵌入数据源配置的情况下在spring引导测试期间执行`schema.sql`?

时间:2017-04-26 06:07:50

标签: java spring spring-boot embedded-database spring-boot-test

有h2数据库的spring boot应用程序,用作主数据库。还有一个resource/schema.sql在启动时通过弹簧启动加载。

但在使用@SpringBootTest spring boot进行集成测试期间,加载此schema.sql。相反,它需要在已经有h2 db的情况下设置嵌入式数据库。

有没有办法在没有嵌入数据源配置的情况下执行schema.sql?并且只对所有测试执行一次(例如,使用@Sql创建模式以进行所有测试不是解决方案)?

2 个答案:

答案 0 :(得分:3)

使用@Sql(scripts = "classpath:schema.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)注释您的类或方法,其中schema.sql位于resources文件夹中。

如果您的测试被标记为集成测试,则需要此项。如果您正在运行单元测试,或者只是在启用单元测试的情况下进行编译,那么Spring引导将为您执行此操作。

答案 1 :(得分:1)

在属性文件中设置它,然后将schema.sql重命名为schema-test.sql spring.datasource.platform=test

Spring引导会自动为您配置嵌入式数据库,只要您在类路径中有它(h2,hsqldb或derby)