
[英]@WebMvcTest, @DataJpaTest I wonder if it's "Unit Tests" or "Integration Tests."
[英]@SpringBootTest Vs @WebMvcTest & @DataJpaTest &service unit tests, what is the best?
我有一个 SpringBoot MVC 应用程序,我想用测试覆盖它。
我有控制器、服务和存储库层。
通过测试覆盖应用程序的最佳实践是什么?
为什么人们使用@SpringBootTest
,而它似乎可以通过@WebMvcTest
& @DataJpaTest
和服务单元测试进行分层测试? 它更快、更精细,不是吗?
据我所知,当使用@SpringBootTest
时,它被称为集成测试,这是否意味着它不应该出现得太频繁?
我想每个代码块都应该被单元测试覆盖,集成覆盖是否相同? 或者集成测试应该在舞台环境而不是测试环境中工作?
如果我创建一个@SpringBootTest
但模拟其他层,这不是一样的(就性能而言)吗? (假设我创建多个@SpringBootTest
并模拟其他层)。
@SpringBootTest
加载完整的应用程序上下文,就像您在运行 Spring Boot 应用程序时启动 Spring 容器的方式一样。
@WebMvcTest
仅加载 web 层,其中包括用于处理请求/响应的安全性、过滤器、拦截器等。 通常,您会为@Controller
或@RestController
下的方法编写测试。
@DataJpaTest
只加载 JPA 的配置。 如果没有另外指定,它会使用嵌入式内存中的 h2。
理想情况下,服务层测试不应有任何注释(除了有助于模拟的注释),因为这是您的业务逻辑(独立于任何配置)所在的位置。
关于最佳实践,它实际上只是关注点分离。 我很少使用@SpringBootTest
,除非它是为了在我的本地进行一些临时集成测试。 @WebMvcTest
类的注释使您的测试更加“模块化”并且速度稍快。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.