我熟悉Spring Data JPA,我用这种声明测试存储库(Spring 4):
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = {PersistenceConfig.class})
@Sql({"classpath:it-data.sql"})
public class MyRepositoryIT {
@Autowired
private MyRepository repository;
@Test
public void someTest() {
...
}
}
所以我负责创建MySQL模式和表,但测试类插入测试数据(it-data.sql),src/test/resources/persistence.properties
包含数据源配置。
现在我想在Spring Boot项目中做同样的事情。我编写了一个有效的简单项目(一个使用服务来检索数据的控制器,这要归功于存储库从MySQL数据库获取数据)。
问题是我无法编写仅测试存储库的简单测试(我不想仅仅为了测试存储库而加载整个应用程序),我得到上下文错误或数据源配置错误。
从
@RunWith(SpringRunner.class)
public class MyRepositoryIT {
@Autowired
private MyRepository repository;
@Test
public void someTest() {
...
}
}
并将src/main/resources/application.properties
复制到src/test/resources/application.properties
(只是更改架构名称),我使用@DataJpaTest
,@ContextConfiguration(classes = Application.class)
,@Sql
,{{尝试了大量的组合1}},@SpringBootTest
,@AutoConfigureTestDatabase
等。但没有任何作品。
因此,知道我的测试中已存在一个MySQL数据库,我应该使用哪些注释将数据插入其中然后测试自动存储的存储库?
感谢。