接口测试从零开始系列_mock技术使用
来源:互联网 发布:3个数最小公倍数算法 编辑:程序博客网 时间:2024/04/30 00:48
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>
------------在普通java工程中,通过添加外部包的方式
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. 设置调用次数
- 接口测试从零开始系列_mock技术使用
- 接口测试从零开始系列_mock技术使用
- 接口测试从零开始系列_mock技术使用
- 接口测试从零开始系列7_Maven使用
- 接口测试从零开始系列4_junit断言介绍
- 接口测试从零开始系列4_junit断言介绍2
- 接口测试从零开始系列4_junit断言介绍3
- 接口测试从零开始系列6_简简单单Spring1
- 接口测试从零开始系列6_简简单单Spring2
- 接口测试从零开始系列4_junit断言介绍
- 接口测试从零开始系列1_如何针对接口方法设计测试用例
- 接口测试从零开始5_教你如何使用ibatis
- 接口测试从零开始5_教你如何使用ibatis2
- 接口测试从零开始2------接口测试的全过程2
- 使用Axis2技术发布webservice接口,使用wsCaller.jar工具测试接口
- 软件测试从零开始之五:探索性测试技术(上)
- 使用SoapUI 测试接口
- 测试从零开始
- Source Insight 经典教程
- Mybatis的基于关联的嵌套结果配置
- 【插头DP】广场铺砖
- Android PMEM驱动分析
- sql行转列
- 接口测试从零开始系列_mock技术使用
- Dart语言特性简介
- 设计模式-快餐简解-【装饰模式】
- dreamweaver中用正则表达式查找替换批量删除 tppabs标签的方法 一步到位
- struts2利用<s:fielderror/>等标签详细地控制错误消息输出格式
- c# TimeSpan 计算2个日期间隔的天数
- ITIL学习(五)职能、流程、项目
- 由远程线程注入代码引出来的一些问题
- vb.net 笔记