我有一个@DataJpaTest
,它需要一些数据库初始化。我尝试将data.sql
放在资源文件夹中,并且可以正常工作。但是,我想使用此测试专用的数据来初始化数据库。
看来,@Sql
是这样做的首选方法。但是,就我而言,尽管指定的文件位于资源中,但它不起作用。数据库只是没有初始化。
我能做什么?
最佳答案
@Sql
注释由SqlScriptsTestExecutionListener
处理。没有此侦听器,将不会对@Sql
注释进行评估。当此侦听器在标准@DataJpaTest
中注册时,如果您显式指定其他侦听器,则语义会发生变化。
在相关的测试中,我已经注册了一个自定义的侦听器,并且由于SqlScriptsTestExecutionListener
没有与其他侦听器一起被明确提及,因此Spring并未添加它。注释掉@TestExecutionListeners
注释会导致像添加SqlScriptsTestExecutionListener
一样使用sql文件。