MockMvc
MockMvc提供了对Spring MVC应用程序测试的支持。它执行完整的Spring MVC请求处理,但是是通过模拟的请求和响应对象来完成的,而不是通过运行中的服务器。
MockMvc可以单独使用来执行请求并使用Hamcrest验证响应,或者通过MockMvcTester来使用,后者提供了基于AssertJ的流畅API。它也可以通过WebTestClient来使用,在这种情况下,MockMvc被作为服务器来处理请求。使用WebTestClient的优势在于,它允许你使用更高级别的对象进行操作,而不仅仅处理原始数据,同时还能切换到针对真实服务器的完整端到端HTTP测试,并使用相同的测试API。
部分总结
📄️ 概述
你可以通过实例化控制器、为其注入依赖项并调用其方法来为Spring MVC编写简单的单元测试。然而,这样的测试并不验证请求映射、数据绑定、消息转换、类型转换或验证,也不涉及任何支持性的@InitBinder、@ModelAttribute或@ExceptionHandler方法。
📄️ 设置选项
MockMvc可以通过两种方式之一进行配置。
🗃️ Hamcrest 集成
8 个项目
🗃️ AssertJ 集成
4 个项目
🗃️ HtmlUnit 集成
4 个项目
📄️ MockMvc vs End-to-End Tests
MockMvc 是基于 spring-test 模块中的 Servlet API 模拟实现构建的,它不依赖于正在运行的容器。因此,与使用实际客户端和实时服务器进行的全端集成测试相比,存在一些差异。
📄️ 进一步示例
该框架自身的测试套件包含了许多示例测试,旨在展示如何单独使用MockMvc,或者通过WebTestClient来使用它。浏览这些示例以获得更多灵感。