有h2数据库的spring boot应用程序,用作主数据库。还有一个resource/schema.sql
在启动时通过弹簧启动加载。
但在使用@SpringBootTest
spring boot进行集成测试期间,不加载此schema.sql
。相反,它需要在已经有h2
db的情况下设置嵌入式数据库。
有没有办法在没有嵌入数据源配置的情况下执行schema.sql
?并且只对所有测试执行一次(例如,使用@Sql
创建模式以进行所有测试不是解决方案)?
答案 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)