Java 使用@sql spring boot test从Resources文件夹以外的自定义位置读取.sql文件

Java 使用@sql spring boot test从Resources文件夹以外的自定义位置读取.sql文件,java,spring-boot,junit,spring-boot-test,java-resources,Java,Spring Boot,Junit,Spring Boot Test,Java Resources,嗨,我已经用spring数据编写了测试用例jpa测试。当我将data.sql和schema.sql文件放在Test/resources文件夹中时,测试用例运行良好,即使没有使用@sql注释,因为spring boot测试的默认行为 但我的要求是,我有一个与主文件夹和测试文件夹并行的文件夹,即integrationTest,其中存放着我的data-h2.sql和schema-h2.sql文件。问题是我无法使用@sql注释读取这些sql文件。如何给出路径,以便可以从任何给定的自定义位置读取sql文件

嗨,我已经用spring数据编写了测试用例jpa测试。当我将
data.sql
schema.sql
文件放在Test/resources文件夹中时,测试用例运行良好,即使没有使用
@sql
注释,因为spring boot测试的默认行为

但我的要求是,我有一个与主文件夹和测试文件夹并行的文件夹,即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[测试工作者]警告o.h.e.jdbc.spi.SqlExceptionHelper-SQL错误:90079,SQLState:90079
08:44:45.329[测试工作者]错误o.h.e.jdbc.spi.SqlExceptionHelper-未找到架构“测试”;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 {
}
Usefulink有助于解决此问题


在挣扎了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 {
}
Usefulink有助于解决此问题


您所说的自定义位置是什么意思?您的
schema-h2.sql的绝对路径是什么?KavithakaranKanapathippillai绝对路径是/data/sfsfsf/workspace/timeevent/tenant creation/8669/online/time/src/integrationTest/resources/schema-h2.sql,其中online是根项目,时间是子项目try
文件:src/integrationTest/resources/schema-h2.sql
. 如果它不工作
文件:/data/sfsfsf/workspace/timeevent/tenant creation/8669/online/time/src/integrationTest/resources/schema-h2.sql
自定义位置是什么意思?您的
schema-h2.sql的绝对路径是什么?KavithakaranKanapathippillai绝对路径是/data/sfsfsf/workspace/timeevent/tenant creation/8669/online/time/src/integrationTest/resources/schema-h2.sql,其中online是根项目,时间是子项目try
文件:src/integrationTest/resources/schema-h2.sql
. 如果它不工作
文件:/data/sfsfsf/workspace/timeevent/tenant creation/8669/online/time/src/integrationTest/resources/schema-h2.sql