tru*_*e_H 4 java spring-mvc mockito spring-boot
我知道使用@SpringbootTest我在测试期间引发整个弹簧上下文,或者在我的情况下使用@SpringBootTest(classes = SomeController.class)我仅引发一个bean - > SomeController。如果这个控制器有一些依赖项,我需要模拟它们。使用注释@WebMvcTest(SoneController.class)我将(根据我的知识)实现相同的目标。
问题是:提供的示例中使用的这两个注释之间有什么区别吗?
@SpringBootTest(classes = SomeController.class)和之间有明显的区别@WebMvcTest(SomeController.class)。
@SpringBootTest(classes = SomeController.class)- 使用组件启动服务器(即像 Tomcat)+ spring 应用程序上下文SomeController.class。除了控制器之外,您通常还应该指定上下文配置以成功启动整个应用程序(例如:当您不指定 时classes,它会回退到@SpringBootApplication)。
@WebMvcTest(SomeController.class)- 仅使用 启动应用程序的Web 层SomeController.class。
有什么不同?
@SpringBootTest测试通常是集成测试,您启动完整的 spring-boot 应用程序并针对该黑盒进行测试。您仍然可以通过在注释参数中提供配置、属性、Web 服务器类型等来调整应用程序启动。
但@WebMvcTest(SomeController.class)通常是控制器的单元测试。这些都是轻量且快速的。在此类测试中,诸如类之类的依赖项@Service会被模拟。
这是一个很好的起点 - https://spring.io/guides/gs/testing-web/
| 归档时间: | 
 | 
| 查看次数: | 8043 次 | 
| 最近记录: |