IOS逻辑自动化测试实践(6)

发表于:2017-07-24来源:TMQ作者:TMQ点击数: 标签:
对私有方法的访问同样有两种方法: 3、mock的使用 对于一些不容易构造或不容易获取的对象,可以创建一个虚拟的对象(mockobject)来完成测试。实现思想

对私有方法的访问同样有两种方法:

3、mock的使用

对于一些不容易构造或不容易获取的对象,可以创建一个虚拟的对象(mock object)来完成测试。实现思想就是根据要mock的对象的class来创建一个对应的对象,并且设置好该对象的属性和调用预定方法后的动作(例如返回一个值,执行其他方法,设置参数中的返回值和返回异常等等),然后将其记录到一个数组中,接下来开发者主动调用该方法,最后做一个verify(验证),从而判断该方法是否被调用,或者调用过程中是否抛出异常等。

在iOS手机管家的逻辑接口测试中选用通用的开源OCMock,配置和OCMock的使用参看如下连接文档:http://ocmock.org/

a、mock返回一个值;

举例:在iOS手机管家的加密相册功能中,手机硬件是否支持3Dtouch会影响其登录流程。如下使用了OCMock来mock isTouchIDSupported 接口,使得其返回设定值YES。

Ps:如下中,通过调用stopMocking可以返回真实的状态,如果在测试结束前需要保存一个实际情况的数据这个方法是比较合适使用的。StopMocking后mock的方法就不能再继续使用了。

b、mock执行其他方法;

举例:如下的mock对象调用isTouchIDSupported方法时,将会调用checkbox对象的isChecked方法。本例中,在mock之前已经将checkbox的isChecked属性值设置为YES,所以调用[checkbox isChecked]返回的值是YES。注:mock执行其他方法需要保证返回值与mock对象调用方法的返回值类型一致。

原文转自:http://tmq.qq.com/2017/07/ios/

...