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

junit单体测试(PowerMockito)二

时间:2015-09-13 12:05:21      阅读:177      评论:0      收藏:0      [点我收藏+]

标签:junit   verify   powermockito   mock   

距离上次做junit单体测试几个月,果然又用到了,又学习了一些新的东西,总结一下。

  1. 首先是对spy的理解,以前一直用mock,没有用过spy,所以对spy并不了解,最近用过几次后,也在google上学习了一下,网上说的都比较书面,mock:全部mock;spy:部分mock;但是到底什么叫全部,什么叫部分却始终没有能弄明白,自己实际使用后感觉,全部mock应该是对整个方法进行mock,不实际走方法,直接返回mock的返回值;而spy的部分mock应该是虽然mock了这个方法,并且返回了我们设置的mock值,但是实际上还是走被mock的方法的,如果这个方法里有错,一样会报异常,影响当前方法的测试。纯个人理解!!!有误导不负责!!!!!

  2. verify的使用,以前也没有用过这个东西,一般断言就够了,这次需要使用,了解了下他的作用,我知道的主要四个作用:①检证是否调用成功方法;②检证方法被调用的次数;③参数是否正确④检证超时。

  3. 在使用spy时y要注意一点;在进行mock时,开头不要使用when,而要用doReturn();

    e.g:PowerMockito.doReturn("1234").when(instance,"method",args);√

    e.g:PowerMockito.when(instance,"method",args).thenReturn("");×

  4. mock私有方法(public方法下调用private方法情况)(全部mock)

    ①以前的方法,使用Whitebox.invoke();

    ②PowerMockito.doCallRealMethod().when(instance).method();

      PowerMockito.DoReturn().when(instance,"method",args);

  5. mock私有方法(public方法下调用private方法情况)(部分mock)

    e.g:

    public class A(){


    public String b(int id){

       return c();

    }


    private String c(){

      return "abc"

    }}

    test:

    A a = new A();

    A aSpy = PowerMockito.spy(a);

    PowerMockito.doReturn("ccc").when(aSpy,"c",1);

    String retValue = aSpy.b(1);

    PowerMockito.VerifyPrivate(aSpy).invoke("c");

  6. mock静态方法

    ①@RunWith(PowerMockRunner.class)

      @PrepareForTest({staticClass.class})

      .......

      PowerMockito.Mock(staticClass.class);

      PowerMockito.when(staticClass.method(args)).thenReturn("123")  //造参数 Mockito.any()

  7. 检证静态方法verify

    PowerMocito.verifyStatic(MOckito.times(1));

    staticClass.method(args1,args2);

  8. Mock final类下的静态方法,操作和5是一样的。

  9. Suppress方法,略过测试的某行

    e.g:PowerMockito.suppress(PowerMockito.method(staticClass.class,"方法名",args1,...));

  10. 在不会以上两种mock私有方法的时候,大家一般用反射来实现,对私有方法的调用

    Method method = className.class.getDeclaredMethod("private method name");

    method.setAccessible(true) //设置可访问

  11. 目前总结这些,遇到新问题,有新的收货后会继续增加。

  12. 最后推荐一个网站,我在这上边学了很多:http://javatechnology.net/java/mockito-spy/

本文出自 “骑猴上树” 博客,请务必保留此出处http://qihoushangshu.blog.51cto.com/7872138/1694216

junit单体测试(PowerMockito)二

标签:junit   verify   powermockito   mock   

原文地址:http://qihoushangshu.blog.51cto.com/7872138/1694216

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