认识Mock

来源:互联网 发布:excel表格找出相同数据 编辑:程序博客网 时间:2024/06/05 11:44

什么是单元测试

维基百科:单元测试(又成为模块测试,Unit Testing)是针对程序模块(软件设计的最小单位)来进行正确性检测的测试工作。程序单元是应用的最小可测试部件。在过程化编程中,一个单元就是某个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类(超类)、抽象类、或者派生类(子类)中的方法。

单元测试框架适用的测试场景

1.单个函数的测试
2.一个class或者几个功能相关class的测试
3.对于纯函数测试,接口级别的测试非常合适
然而对于一些复杂的场景:例如被测对象依赖复杂,甚至无法简单new出这个对象;一些failure场景的测试;被测对象中涉及多线程合作;被测对象通过消息与外界交互的场景等等,单纯依赖单元测试框架是无法实现单元测试的。但是Mock一般可以解决以上场景遇到的问题。

什么是Mock

百度百科:mock测试就是在测试过程中,对于某些不容易造成或者不容易获取的对象,用一个虚拟的对象来创建一边测试的测试方法。

Mock适用的测试场景

1.真实对象具有不可确定的行为(产生不可预测的结果,如股票的行情);
2.真实对象对象很难被创建(比如具体的web容器);
3.真实对象的某些行为很难出发(比如网络错误);
4.真实情况令程序的运行速度很慢,比如有些更新程序设定为较长时间才进行一次更新操作;
5.真实对象有用户界面;
6.测试需要询问真实对象它是如何被调用的(比如测试可能需要验证某个回调函数是否被调用了);
以下为不得不mock的
7.一些比较难构造的Object:这类Object通常有很多依赖,在单元测试中构造出这样类通常花费的成本太大;
8.执行时间较长的Object:有一些Object操作费时,而被测对象依赖于这一操作的执行结果,例如大文件的写操作,数据的更新等等;
9. 异常逻辑:一些异常的逻辑往往在正常测试中是很难触发的,通过Mock可以认为的控制触发异常逻辑。
10.在一些压力测试的场景下,也不得不使用mock,例如在分布式系统测试中,通常需要测试一些单点在压力场景下的工作是否正常。但是通常测试集群在正常逻辑下无法提供足够的压力(受限于机器的数量),这时候mock就可以满足。
0 0
原创粉丝点击