概览
你可以通过实例化控制器、注入其依赖并调用其方法来为 Spring MVC 编写普通的单元测试。但是,此类测试无法验证请求映射、数据绑定、消息转换、类型转换或验证,也无法涉及任何支持的 @InitBinder、@ModelAttribute 或 @ExceptionHandler 方法。
MockMvc 旨在为 Spring MVC 控制器提供更完整的测试支持,而无需运行服务器。它通过调用 DispatcherServlet 并传递来自 spring-test 模块的 Servlet API 的“模拟”实现来完成此操作,该实现无需运行服务器即可复制完整的 Spring MVC 请求处理。
MockMvc 是一个服务器端测试框架,可让你使用轻量级和有针对性的测试来验证 Spring MVC 应用程序的大部分功能。你可以单独使用它来执行请求并使用 Hamcrest 验证响应,也可以通过提供使用 AssertJ 的流畅 API 的 MockMvcTester 来使用它。你还可以通过 WebTestClient API 使用它,其中 MockMvc 作为服务器插入以处理请求。