什么是Mock
Mock是一种测试手段,通过构建模拟的mock对象来进行单元测试
单元测试: 单元测试是用来对一个模块、一个函数或者一个类来进行正确性检验的测试工作。简单来说就是测试一小段代码逻辑功能是否正确-->单元测试框架:Junit(juejin.im/editor/draf…
注意:通过单元测试不一定就没有bug
Mock就是进行单元测试的工具,支持各种语言。
Java: EasyMock
C++: EasyMock
Python: Mock
此外还有PowerMock,Mockito等类似工具。
为什么使用Mock
Mock是用来进行测试的,但为什么要使用Mock呢,对于一些函数,直接输入测试用例观察结果不就可以么?
对于“纯函数”的测试当然没有问题,但是在实际的工作项目中,往往各个函数之间存在着依赖关系,无法轻易的构造。甚至可能出现被依赖的部分没有开发完成的情况。所以通过构造mock对象进行模拟。
什么时候使用Mock
可以看出Mock的使用能够隔离依赖造成的影响,模拟一些复杂的数据用例。并且由于Mock工具的存在,也避免了额外的代码开发,能不能对于所有的单元测试都使用mock呢?
肯定是不可以的,很简单的道理,对于依赖不多的模块(例如纯函数)建议直接进行测试,因为在写Mock代码的过程中也可能造成bug的产生。另外,测试的过程中,如果大量使用mock,会使mock测试的场景失去了真实性,可能会到接入真实数据的时候才会发现缺陷,会造成后续修复成本较高。--还未理解
对于Mock测试,不需要对所有的依赖对象进行mock,只对那些构造复杂、构造耗时较长的依赖进行mock
Mock的使用
不同的Mock工具之间使用略有不同,这里以Java的EasyMock为主进行总结。