我目前正在为我的应用程序实现一些存储库测试。我设置了一个内存数据库。
我的测试类中有以下设置:
package dk.test
@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
@IntegrationTest
public class TestClass {
@Autowired
private Repository repository;
@Test
@Sql(executionPhase = Sql.ExecutionPhase.BEFORE_TEST_METHOD, scripts = "classpath:dk/test/seed.sql") //is placed together with the test class in dk.test - does not work
@Sql(executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD, scripts = "classpath:truncate-table.sql") //Is placed in /src/test/resources - works fine
public void restRepository() {
List<Data> result = repository.findData();
assertThat(result.size(), is(2));
}
}
当我的脚本放在/ src / test / resources /中时,一切正常,我的脚本被执行,我得到了预期的结果。
-src
-test
-java
-dk.test
-TestClass.java
-resources
-seed.sql
但是,当我将seed.sql
与测试类放在一起时,如下所示:
-src
-test
-java
-dk.test
-TestClass.java
-seed.sql
我得到以下例外:
org.springframework.jdbc.datasource.init.CannotReadScriptException: Cannot read SQL script from class path resource [dk/test/seed.sql]; nested exception is java.io.FileNotFoundException: class path resource [dk/test/seed.sql] cannot be opened because it does not exist
我想要这样的设置,因为我们将有许多不同的数据集来执行测试,并且更容易看到哪些数据与精确的测试类相结合。