为什么 @Sql 在 Spring 测试中不起作用?

Jon*_*han 4 java testing spring-data-jpa

我有一个@DataJpaTest需要一些数据库初始化的项目。我尝试将 a 放入data.sql资源文件夹中并且它有效。但是,我想使用特定于此测试的数据来初始化数据库。

看来,这@Sql是这样做的首选方式。但是,就我而言,尽管指定的文件位于资源中,但它不起作用。数据库根本没有初始化。

我能做些什么?

Jon*_*han 6

注释@SqlSqlScriptsTestExecutionListener. 如果没有这个监听器,就不会评估注释@Sql。虽然此侦听器已在标准中注册@DataJpaTest,但如果您显式指定更多侦听器,则语义会发生变化。

在相关测试中,我注册了一个自定义侦听器,并且由于SqlScriptsTestExecutionListener没有与其他侦听器一起明确提及,因此 spring 没有添加它。注释掉@TestExecutionListeners注释会导致使用 sql 文件,就像添加SqlScriptsTestExecutionListener.