【发布时间】:2019-12-19 09:21:14
【问题描述】:
我有一个@DataJpaTest,它需要一些数据库初始化。我尝试在资源文件夹中放置一个data.sql,它可以工作。但是,我想用特定于此测试的数据初始化数据库。
看来,@Sql 是这样做的首选方式。但是,在我的情况下,它不起作用,尽管指定的文件位于资源中。数据库根本没有初始化。
我能做什么?
【问题讨论】:
标签: java testing spring-data-jpa
我有一个@DataJpaTest,它需要一些数据库初始化。我尝试在资源文件夹中放置一个data.sql,它可以工作。但是,我想用特定于此测试的数据初始化数据库。
看来,@Sql 是这样做的首选方式。但是,在我的情况下,它不起作用,尽管指定的文件位于资源中。数据库根本没有初始化。
我能做什么?
【问题讨论】:
标签: java testing spring-data-jpa
@Sql 注解由SqlScriptsTestExecutionListener 处理。如果没有此侦听器,将不会评估 @Sql 注释。虽然此侦听器在标准 @DataJpaTest 中注册,但如果您明确指定更多侦听器,语义会发生变化。
在相关测试中,我注册了一个自定义侦听器,因为 SqlScriptsTestExecutionListener 没有与其他侦听器一起明确提及,所以它没有在 spring 中添加。注释掉 @TestExecutionListeners 注释会导致使用 sql 文件,就像添加 SqlScriptsTestExecutionListener 一样。
【讨论】: