有一个带有 h2 数据库的 Spring Boot 应用程序,用作主数据库。还有一个
resource/schema.sql
,它在 Spring Boot 启动时加载。
但是在使用
@SpringBootTest
进行集成测试时,Spring Boot 不会加载这个 schema.sql
。相反,它需要在已经有
h2
数据库的情况下设置嵌入式数据库。有没有办法在没有嵌入数据源配置的情况下执行
schema.sql
?并且对所有测试只执行一次(例如,使用
@Sql
为所有测试创建模式不是解决方案)?
@Sql(scripts = "classpath:schema.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
注释您的类或方法,其中 schema.sql 位于资源文件夹中。如果您的测试被标记为集成测试,您需要这个。如果您正在运行单元测试或只是在启用单元测试的情况下进行编译(默认情况下),Spring Boot 将为您执行此操作。
spring.datasource.platform=test