powermockito 的使用技巧

转:http://blog.sina.com.cn/s/blog_791e34210102y1bg.html


当IT中有些依赖组件无法正常集成,需要mock支持测试,可以使用power mockito。

特别注意:
           当对一个对象进行powermockito,应该在prepare方法,统一mock这个对象。然后在其他方法,分别进行调用when,否则,多个方法内进行mock,会出错。

比如有个 Service处于IT case的底层,普通的mock根本mock不进去,但我们又不能为了集成测试,为这个test case单独开一个口子,注入mock对象。power mockito强大的mock能力在这里可以用上。
比如: 我的mock对象 impalaService它在schmaMessagehandler类里new出来的,则需要加上注解。
首先在test 类的开头,加上注解头部,头部类是mock对象所在类。
@RunWith(PowerMockRunner.class)
@PrepareForTest({HttpClient.class,SchemaMessageHandler.class})
其次:
 
 
PooledImpalaService impalaService = PowerMockito.mock(PooledImpalaService.class);
PowerMockito.whenNew(PooledImpalaService.class).withArguments((ConfigurationanyObject()).thenReturn(impalaService);
doNothing().when(impalaService).createTable(anyString(),(Schema) anyObject());
使用powermockito,注意在用any()参数时候,比如 
 
 
doNothing().when(impalaService).createTable(anyString(),(Schema) anyObject());
参数列表中,只要一个使用了any(),any****,则所有参数都要用any相关的参数,否则mock不成功。

总的来说,在it当中,只有你想mock一个对象,一定可以,比如你在A类中用到了B类,那么在prepareForTest中增加A类的注解。
如下:
@PrepareForTest({A.class})
然后,在it中 声明一个B类,B b = PowerMockito.mock(B.class);
这时候,就可以指定b的方法的返回值,或 PowerMockit.doNothing().when(b).方法名(),让该方法什么也不做。最后,再讲A实例化。PowerMockit是讲究mock设置顺序的。一定要注意。
 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值