码迷,mamicode.com
首页 > 其他好文 > 详细

PowerMockito的基本使用记录

时间:2015-04-26 16:49:22      阅读:464      评论:0      收藏:0      [点我收藏+]

标签:mock   powermockito   java   

Mock是编程中Unit测试的常态。最开始使用的是easymock,确实很easy,可惜功能不够强大。对于private方法测试无能为力,对于static的工具类也没有办法,于是转向了PowerMockito,很好的解决了我的困扰。


Mock测试的主要做法就是在真实方法调用之前先模拟被测试类关联的外部类,接口的调用实现,对指定的参数,返回虚拟的结果(虚拟的返回值或者异常等),然后调用测试方法,再之后验证模拟的函数调用都有发生。


记录一下我使用powermockito的一些测试用例。


1.基本简单的mock和验证 (被测试的类是JcifsDataTransfer,引用的类包括NtlmPasswordAuthentication和SmbFile),其中NtlmPasswordAuthentication和SmbFile是在被测试类中New的实例,所以需要在Class的annotation中除了@RunWith(PowerMockRunner.class) 也要加入 @preparefortest (JcifsDataTransfer.class)。方法调用都是有返回值的,所以用when.thenReturn来模拟。

注意:New的preparefortest必须是被测试类

技术分享


2. Mock Static类,值得注意的是static的verify先调用verifystatic(times)再直接写static方法的调用

技术分享


3. 同一个方法调用多次返回不一样的值

when(someMock.someMethod()).doAnswer(new Answer() {
    private int count = 0;

    public Object answer(InvocationOnMock invocation) {
        if (count++ == 1)
            return 1;

        return 2;
    }
});
或者如下(第一次抛出异常,第二次返回mock值

when(mock.someMethod("some arg"))
  .thenThrow(new RuntimeException())
  .thenReturn("foo");




PowerMockito的基本使用记录

标签:mock   powermockito   java   

原文地址:http://blog.csdn.net/cloud_ll/article/details/43916915

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!