java 如何在Sping Boot Test @Sql注解中使用掩码来描述文件?

kfgdxczn  于 2022-11-20  发布在  Java
关注(0)|答案(1)|浏览(143)

@Sql注解位于@Test方法下,用于执行Sql脚本。
一般用途:

@Sql(scripts = "/folder/my_favourite_script.sql")
    @Test

假设文件夹中有1000个sql文件,我想一次执行所有这些文件,如何使用掩码来描述这些文件?
预期结果:

@Sql(scripts = "/folder/*.sql")
    @Test

不幸的是,它不是这样工作的:
异常错误:无法从类路径资源[folder/*.sql]中读取SQL脚本;嵌套异常是java.io。文件未找到异常:无法打开类路径资源[folder/*.sql],因为它不存在

z0qdvdin

z0qdvdin1#

@Sql注解(以及@SqlGroup,它接受一个@Sql数组),你不能传递一个文件掩码并处理它。
因此,您可以选择:
1.PostgreSQL数据库:如前所述,你不能通过屏蔽包含任何现有注解的文件。但是,check this link out学习如何强制执行它。基本上,你必须添加一个@Autowired DataSource ds,并通过调用它的操作来执行脚本,而不是注解魔术...这样你也可以为任何特定的文件夹添加文件屏蔽逻辑。
1.H2:runscript命令(如果您将H2用于测试数据库)。您可以通过在资源中创建一个.sql(我们将其称为scripts.sql)文件来使用此命令,该文件包含以下内容:

RUNSCRIPT FROM 'file1.sql';
RUNSCRIPT FROM 'file2.sql';
etc...

然后仅包括具有如下注解的所述文件:@Sql("scripts.sql")

相关问题