有一个带有 h2 数据库的 spring boot 应用程序用作主数据库。还有一个 resource/schema.sql
由 spring boot 在启动时加载。
但在使用 @SpringBootTest
进行集成测试期间,spring boot 不会加载此 schema.sql
。相反,它需要在已经有 h2
db 的情况下设置嵌入式数据库。
有没有办法在没有嵌入式数据源配置的情况下执行schema.sql
?并且对所有测试只执行一次(例如,使用 @Sql
为所有测试创建模式不是解决方案)?
最佳答案
使用 @Sql(scripts = "classpath:schema.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)
注释您的类或方法,其中您的 schema.sql 位于资源文件夹中。
如果您的测试被标记为集成测试,则需要它。如果您正在运行单元测试或只是在默认情况下启用单元测试进行编译,则 Spring Boot 将为您执行此操作。
关于java - 如何在没有嵌入式数据源配置的情况下在 spring boot 测试期间执行 `schema.sql`?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43626269/