mock技术使用

  1. 什么情况下会使用mock技术
    1.1.需要将当前被测单元和其依赖模块独立开来,构造一个独立的测试环境,不关注被测单元的依赖对象,只关注被测单元的功能逻辑
    ----------比如被测代码中需要依赖第三方接口返回值进行逻辑处理,可能因为网络或者其他环境因素,调用第三方经常会中断或者失败,无法对被测单元进行测试,这个时候就可以使用mock技术来将被测单元和依赖模块独立开来,使得测试可以进行下去。
    1.2.被测单元依赖的模块尚未开发完成,而被测单元需要依赖模块的返回值进行后续处理
    ----------比如service层的代码中,包含对Dao层的调用,但是,DAO层代码尚未实现
    1.3.被测单元依赖的对象较难模拟或者构造比较复杂
    ----------比如,支付宝支付的异常条件有很多,但是模拟这种异常条件很复杂或者无法模拟,比如,查询聚划算的订单结果,无法在测试环境进行模拟
    2.Mock技术分类
    2.1.手动构造mock对象
    ---------------比如,可以自己写某个接口方法的实现,根据需要编写返回值,测试代码中使用该实现类对象
    缺点:会增加代码量,在写mock对象代码时,有可能引入错误
    2.2.使用开源代码提供的构造mock方法
    --------------比如easyMock,提供了对接口类的模拟,能够通过录制、回放、检查三步来完成大体的测试过程,可以验证方法的调用种类、次数、顺序,可以令Mock对象返回指定的值或抛出指定异常
    3.EasyMock使用
    3.1.引入easyMock
    ------------在maven工程中,通过pom配置依赖关系

    org.easymock
    easymock
    3.0
    test

    ------------在普通java工程中,通过添加外部包的方式
    3.2.使用easyMock过程
    3.2.1.使用EasyMock生成Mock对象;
    pingJiaDao = mockControl.createMock(IPingJiaDao.class);
    3.2.2.设定Mock对象的预期行为和输出;
    EasyMock.expect(pingJiaDao.getGoodPingJiaRate(storeId)).andReturn(0.11);
    3.2.3.将Mock对象切换到Replay状态;
    EasyMock.replay(pingJiaDao);
    3.2.4.调用Mock对象方法进行单元测试;
    storeService.setStoredao(pingJiaDao);
    double rate = storeService.getStoreGoodRate(storeId);
    3.2.5.对Mock对象的行为进行验证。
    EasyMock.verify(pingJiaDao);
    4.其他easyMock功能
    4.1.特殊的mock对象:niceMock
    4.2.参数匹配器
    4.3.重置mock对象
    4.4.模拟异常抛出
    4.5.设置调用次数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值