概览

你可以通过实例化一个控制器,注入其依赖,并调用其方法来为 Spring MVC 编写普通的单元测试。然而,此类测试并不会验证请求映射、数据绑定、消息转换、类型转换或验证,也不涉及任何支持性的 @InitBinder@ModelAttribute@ExceptionHandler 方法。

MockMvc 旨在为 Spring MVC 控制器提供更完整的测试支持,而无需运行服务器。它通过调用 DispatcherServlet 并传递 Servlet API 的“模拟”实现spring-test 模块中来实现,这可以在不运行服务器的情况下复制完整的 Spring MVC 请求处理过程。

MockMvc 是一个服务器端测试框架,允许您使用轻量级且有针对性的测试来验证 Spring MVC 应用程序的大部分功能。您可以单独使用它来执行请求并使用 Hamcrest 验证响应,或者通过提供基于 AssertJ 的流式 API 的 MockMvcTester 来使用它。您还可以通过 WebTestClient API 使用它,将 MockMvc 作为服务器接入以处理请求。