我有一个 SpringBoot MVC 应用程序,我想用测试来覆盖它。
我有 Controller 、服务和存储库层。
通过测试覆盖应用程序的最佳实践是什么?
人们为什么使用@SpringBootTest
虽然它似乎可以通过 @WebMvcTest
分层测试& @DataJpaTest
和服务单元测试?它更快,更细化,不是吗?
AFAIK 当@SpringBootTest
使用它称为集成测试,这是否意味着它不应该经常出现?
我想每一 block 代码都应该被单元测试覆盖,集成覆盖是否一样?或者集成测试应该在舞台环境而不是在测试环境中工作?
如果我创建一个 @SpringBootTest
是不是一样(在性能方面)但模拟其他层? (假设我创建了多个 @SpringBootTest
并模拟其他层)。
最佳答案
@SpringBootTest
加载完整的应用程序上下文,就像您在运行 Spring Boot 应用程序时启动 Spring 容器的方式一样。@WebMvcTest
仅加载 web 层,其中包括用于处理请求/响应的安全性、过滤器、拦截器等。通常你会为 @Controller
下的方法编写测试。或 @RestController
.@DataJpaTest
仅加载 JPA 的配置。如果没有另外指定,它使用嵌入式内存 h2。关于最佳实践,它实际上只是关注点分离。我很少用
@SpringBootTest
除非它是为了在我的本地进行一些临时集成测试。注释如 @WebMvcTest
使您的测试更加“模块化”并且速度稍快。
关于spring-boot - @SpringBootTest 与 @WebMvcTest & @DataJpaTest &service 单元测试,什么是最好的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59097035/