-
Mock定义
mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为 -
使用mock
在做单元测试过程中,经常会有以下的场景:
在class A 依赖 class B
class B 依赖 class C和class D
class C 依赖 ...
class D 依赖 ...
1.被测对象依赖的对象构造复杂 我们想对class A进行单元测试,需要构造大量的class B、C、D等依赖对象,他们的构造过程复杂(体现在构造步骤多、耗时较长),这时我们可以利用mock去构造虚拟的class
B、C、D对象用于class A的测试,因为我们只是想测试class A的行为是否符合预期,我们并不需要测试依赖对象。2.被测单元依赖的模块尚未开发完成,而被测对象需要依赖模块的返回值进行测试:
----- 比如service层的代码中,包含对dao层的调用,但dao层代码尚未开发
----- 比如web的前端依赖后端接口获取数据进行联调测试,但后端接口并未开发完成
- 哪些时机和场合需要使用mock
1.单元测试/接口测试中测试对象依赖其他对象,这些对象的构造复杂、耗时或者根本无法构造(未交付)
2.我们只测试对象内部逻辑的质量,不关心依赖对象的逻辑正确性和稳定性
4.mock分类
单元测试 基于代码层面的mock
接口测试 基于网络接口层的mock
5.mock原理
http 基于代理或host的方式
rcp
6.单元测试mock的框架
基于JAVA
- EasyMock
- Mockito
- powerMockito
7.Mock方案
搭建服务
自定义URL与替换数据规则
通过代理,host解析等方式改变网络访问目标
无需修改代码即可直接使用