2011人阅读
测试理论(12)
1、什么情况下会使用mock技术
(1)需要将当前被测单元和其依赖模块独立开来,构造一个独立的环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑
----------比如被测代码中需要依赖第三方接口返回值进行逻辑处理,可能因为网络或者环境因素,调用第三方经常会中断或者失败,无法对被测单元进行测试,这个时候就可以使用mock技术来将被测单元和依赖模块独立开来,使得测试可以进行下去。
(2)被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理
----------比如service层的代码中,包含对Dao层的调用,但是,DAO层代码尚未实现
(3)被测单元依赖的对象较难模拟或者构造比较复杂
----------比如,支付宝支付的异常条件有很多,但是模拟这种异常条件很复杂或者无法模拟,比如,查询聚划算的订单结果,无法在测试环境进行模拟
2、Mock技术分类
(1)手动构造mock对象
---------------比如,可以自己写某个接口方法的实现,根据需要编写返回值,测试代码中使用该实现类对象
缺点:会增加代码量,在写mock对象代码时,有可能引入错误
(2)使用开源代码提供的构造mock方法
--------------比如easyMock,提供了对接口类的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令Mock对象返回指定的值或抛出指定异常
3、EasyMock使用
(1)引入easyMock
------------在maven工程中,通过pom配置依赖关系
&dependency&
&&& &groupId&org.easymock&/groupId&
&&& &artifactId&easymock&/artifactId&
&&& &version&3.0&/version&
&&& &scope&test&/scope&
&/dependency&
------------在普通工程中,通过添加外部包的方式
(2)使用easyMock过程
1)使用EasyMock生成Mock对象;
pingJiaDao = mockControl.createMock(IPingJiaDao.class);
2)设定Mock对象的预期行为和输出;
EasyMock.expect(pingJiaDao.getGoodPingJiaRate(storeId)).andReturn(0.11);
3)将Mock对象切换到Replay状态;
EasyMock.replay(pingJiaDao);
4)调用Mock对象方法进行;
storeService.setStoredao(pingJiaDao);
double rate = storeService.getStoreGoodRate(storeId);
5)对Mock对象的行为进行验证。
EasyMock.verify(pingJiaDao);
4、其他easyMock功能
(1)特殊的mock对象:niceMock
(2)参数匹配器
(3)重置mock对象
(4)模拟异常抛出
(5)设置调用次数
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2350352次
积分:24286
积分:24286
排名:第236名
原创:298篇
转载:329篇
评论:242条
1.凤凰网:(性能测试)
2.猎聘网:(性能+接口自动化)
3.奇虎360(web平台*服务端测试):(服务的性能、手机浏览器性能、自动化)
(1)(1)(1)(1)(1)(1)(4)(2)(3)(7)(2)(2)(2)(2)(1)(2)(2)(1)(4)(2)(2)(3)(12)(5)(6)(7)(21)(12)(21)(30)(27)(17)(36)(29)(34)(17)(50)(25)(14)(18)(13)(33)(26)(10)(30)(65)(26)(1)问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
在游戏测试中用什么工具抓包
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
同步到新浪微博
分享到微博?
你好!看起来你挺喜欢这个内容,但是你还没有注册帐号。 当你创建了帐号,我们能准确地追踪你关注的问题,在有新答案或内容的时候收到网页和邮件通知。还能直接向作者咨询更多细节。如果上面的内容有帮助,记得点赞 (????)? 表示感谢。
明天提醒我
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
扫扫下载 App}