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

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

有一个带有 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/

相关文章:

java - 我想将 excel 转换为 xml

Java 首选项在 Windows 7 中不起作用

java - 实现Spring Service根据配置向不同的Kafka主题发送消息

java - 有没有办法注入(inject)一个依赖项,该依赖项将根据注入(inject)的位置(使用 Spring 引导)使用特定的 bean?

java - 根据 JSON 请求正文中的另一个属性反序列化抽象属性

java - 如何从java中的javascript调用返回数组?

java - 为什么 "can' 找不到 android.support.design.widget.TextInputLayout”?

java - 在编译时为基于 springfox 的项目生成 swagger JSON 文件

spring - 兼容版本 spring cloud、r2dbc

java - 如何接收请求正文数据以及多部分图像文件?