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

Che*_*rry 3 java spring embedded-database spring-boot spring-boot-test

有一个带有 h2 数据库的 spring boot 应用程序,用作主数据库。还有一个resource/schema.sql在启动时通过 spring boot 加载的。

但是在使用@SpringBootTestspring boot 的集成测试期间不会加载这个schema.sql。相反,它需要在h2已经有db 的情况下设置嵌入式数据库。

有没有办法在schema.sql没有嵌入数据源配置的情况下执行?并且只对所有测试执行一次(例如@Sql,用于所有测试的模式创建不是解决方案)?

小智 6

使用@Sql(scripts = "classpath:schema.sql", executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD)您的 schema.sql 在资源文件夹中的位置注释您的类或方法。

如果您的测试被标记为集成测试,您就需要这个。如果您正在运行单元测试或只是在启用默认单元测试的情况下编译,Spring Boot 将为您执行此操作。