java如何执行`模式。sql`在没有嵌入式数据源配置的spring引导测试期间?
有一个spring启动应用程序,其中h2数据库用作主数据库。还有一个resource/schema.sql
在spring boot启动时加载
但是在使用@SpringBootTest
进行集成测试期间,spring引导不会加载这个schema.sql
。相反,它需要在已有h2
数据库时设置嵌入式数据库
有没有一种方法可以在没有嵌入数据源配置的情况下执行schema.sql
?并且对所有测试只执行一次(例如,对所有测试使用@Sql
创建模式不是解决方案)
# 1 楼答案
在属性文件中设置此选项,然后重命名架构。sql到模式测试。sql
spring.datasource.platform=test
Spring boot会自动为您配置嵌入式数据库,只要您在类路径(h2、hsqldb或derby)中拥有该数据库
# 2 楼答案
用
@Sql(scripts = "classpath:schema.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
注释类或方法,其中包含您的模式。sql位于资源文件夹上如果您的测试被标记为集成测试,则需要此选项。如果您正在运行单元测试或只是在启用单元测试的情况下编译(默认情况下),SpringBoot将为您执行此操作