不确定是否将其视为“合法问题”或“纯粹基于意见”,但是在Spring Boot应用程序中直接测试存储库是否有“最佳实践”?或者,是否应该将任何集成测试仅针对相关服务?
该问题的原因很简单,就是在大多数情况下,Spring Boot应用程序中的存储库不包含项目生成的代码。充其量,它包含项目定义的方法签名,Spring会为此生成实现(假设正确的命名约定)。
谢谢...
答案 0 :(得分:4)
如果您可以弄乱它,则应该对其进行测试。这里的混乱机会可能包括:
在所有这些情况下,您都不在测试Spring Data JPA,而是在测试使用Spring Data JPA实现的功能。
使用现成的方法 的情况,例如findOne,findAll,保存等,不需要指纹的地方,不需要测试。
测试这些东西很容易,最好早发现错误。
答案 1 :(得分:0)
是的,我认为这样做是一个好习惯。您可以使用@DataJpaTest批注,它会在内存数据库中启动。官方文件说:
You can use the @DataJpaTest annotation to test JPA applications. By default, it configures an in-memory embedded database, scans for @Entity classes, and configures Spring Data JPA repositories. Regular @Component beans are not loaded into the ApplicationContext.
链接到文档:https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html
答案 2 :(得分:0)
从这样的想法开始:应该仅在服务内部使用存储库,并使用服务与系统的其他层进行交互,我认为在大多数情况下测试服务就足够了。
我不会测试标准存储库方法,例如findAll或findBy ..,它们已经过测试,目的不是测试JPA,而是测试应用程序。
唯一可以直接测试的存储库方法是带有自定义查询的存储库方法。这些查询可能位于共享库中,并且在不同项目中编写类似的测试效率不高(在这种情况下,回归很重要)