Java后端,选择“”
优质文章,及时送达
![c3c7e4c6-1d2f-eb11-8da9-e4434bdf6706.png](http://p03.5ceimg.com/content/c3c7e4c6-1d2f-eb11-8da9-e4434bdf6706.png)
作者:AlanShelby(同公众号)
https://zhuanlan.zhihu.com/p/43260823
推荐阅读:IntelliJ IDEA 2019.3 这回真的要飞起来了
一、前言
在前面的章节我们介绍过 Junit 的使用,也了解过 spring-test,今天我们来了解一个新玩意 -- mock 测试。这里仅仅做一个入门,对返回视图和返回 Json 数据的方法进行测试演示,不会把所有的方法都介绍到,具体文档详见链接:Mock Test,本章节主要讲解以下两部分内容:
1、Mock 测试简介
2、测试用例演示
二、Mock 测试简介
1、什么是 mock 测试
在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,就是mock 测试在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法,就是* mock 测试*。
虚拟的对象就是 mock 对象。
mock 对象就是真实对象在调试期间的代替品。
2、为什么使用 mock 测试
避免开发模块之间的耦合
轻量、简单、灵活
3、MockMVC 介绍
基于 RESTful 风格的 SpringMVC 的测试,我们可以测试完整的 Spring MVC 流程,即从 URL 请求到控制器处理,再到视图渲染都可以测试。
1)MockMvcBuilder
MockMvcBuilder 是用来构造 MockMvc 的构造器,其主要有两个实现:StandaloneMockMvcBuilder 和 DefaultMockMvcBuilder,对于我们来说直接使用静态工厂 MockMvcBuilders 创建即可。
2)MockMvcBuilders
负责创建 MockMvcBuilder 对象,有两种创建方式:
standaloneSetup(Object... controllers):通过参数指定一组控制器,这样就不需要从上下文获取了。
webAppContextSetup(WebApplicationContext wac):指定 WebApplicationContext,将会从该上下文获取相应的控制器并得到相应的 MockMvc,本章节下面测试用例均使用这种方式创建 MockMvcBuilder 对象。微信搜索 web_resource 关注后获取更多优质文章
3)MockMvc
对于服务器端的 SpringMVC 测试支持主入口点。通过 MockMvcBuilder 构造 MockMvcBuilder 由 MockMvcBuilders 建造者的静态方法去建造。
核心方法:perform(RequestBuilder rb) -- 执行一个 RequestBuilder 请求,会自动执行 SpringMVC 的流程并映射到相应的控制器执行处理,该方法的返回值是一个 ResultActio