Reading.sql 使用@sql spring 引导测试来自资源文件夹以外的自定义位置的文件

Reading.sql file from custom location other than resouces folder using @sql spring boot test

您好,我已经使用 spring data jpa test 编写了测试用例。当我将 data.sqlschema.sql 文件放入 test/resources 文件夹时,测试用例 运行 很好,即使由于 [=45= 的默认行为而没有使用 @Sql 注释]开机测试。

但我的要求是我有一个与主文件夹和测试文件夹平行的文件夹,即 integrationTest,其中我的 data-h2.sql 和 schema-h2.sql 文件驻留。问题是我无法使用 @Sql 注释读取这些 sql 文件。如何提供路径以便我可以从任何给定的自定义位置读取 sql 文件

下面是文件夹结构和代码供参考

代码

@DataJpaTest
@Sql(scripts={"/integrationTest/schema-h2.sql", "/integrationTest/data-h2.sql"})
public class AbcRepositoryTest extends AbstractTestNGSpringContextTests {

}

错误

08:44:45.329 [测试工作者] WARN o.h.e.jdbc.spi.SqlExceptionHelper - SQL 错误:90079,SQL状态:90079 08:44:45.329 [测试工作人员] 错误 o.h.e.jdbc.spi.SqlExceptionHelper - 未找到架构“TEST”; SQL 声明:

经过 3 到 4 小时的努力,找到了我发布的问题的解决方案 我们需要使用 SqlScriptsTestExecutionListener 以便从您选择的自定义位置读取 @Sql 脚本,并放置 DirtiesContext 以便为每个测试用例提供 @Sql 脚本 运行 .

@DataJpaTest
@TestExecutionListeners(listeners = { SqlScriptsTestExecutionListener.class })
@DirtiesContext(classMode = DirtiesContext.ClassMode.BEFORE_EACH_TEST_METHOD)
@Sql(scripts = {"file:src/integrationTest/resources/schema-h2.sql","file:src/integrationTest/resources/data-h2.sql"})
public class AbcRepositoryTest extends AbstractTestNGSpringContextTests {
}

UsefulLink 帮助解决问题

https://github.com/spring-projects/spring-framework/issues/18929