接口测试从零开始系列_mock技术使用

上一篇 / 下一篇  2011-12-08 20:12:27 / 个人分类:接口测试

 

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.       设置调用次数

 


TAG:

引用 删除 miice   /   2017-12-16 03:54:14
5
gaoying_i的个人空间 引用 删除 gaoying_i   /   2015-12-14 10:49:07
5
引用 删除 zld87   /   2013-10-18 19:12:23
5
引用 删除 cumonkey   /   2013-10-18 13:35:22
5
系统性能与软件架构 引用 删除 cocayang   /   2011-12-13 13:09:38
5
545511360的个人空间 引用 删除 545511360   /   2011-12-09 15:23:47
5
xin_晴的个人空间 引用 删除 xin_晴   /   2011-12-09 14:53:41
您好,我是51Testing软件测试网的编辑,您的本篇博文被推荐至51Testing软件测试网首页发表:http://www.51testing.com/html/05/n-804105.html
感谢您关注并支持51Testing博客,期待您更多的优秀原创博文。
 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

Open Toolbar