Mockito学习笔记

  1. Mock

    1. 所谓的mock就是创建一个类的虚假的对象,在测试环境中,用来替换掉真实的对象,以达到两大目的:

      1. 验证这个对象的某些方法的调用情况,调用了多少次,参数是什么等等

      2. 指定这个对象的某些方法的行为,返回特定的值,或者是执行特定的动作

    2. Mockito 这个框架,这个是Java界使用最广泛的一个mock框架

  2. Mockito 验证方法调用

    1. 使用步骤

      1. 创建一个mock对象

        Object mock = Mockito.Mock(Object.class);

         

      2. 将该mock对象置入到待验证类中(mock出来的对象并不会自动替换掉正式代码里面的对象,必须要有某种方式把mock对象应用到正式代码里面)

        Object.setMock(mock);

         

      3. 使用mockito进行验证

         

        /**
        * objectToVerify mock对象
        * methodToVerify 要验证的方法
        * argumrnts 待验证方法的验证参数
        * 验证该 mock 对象的 methodToVerify 方法被执行并且入参是 arguments
        */
        Mockito.verify(objectToVerify).methodToVerify(arguments);

         

    2. Mockito 方法记录

      1. 验证方法被执行次数

        /**
        * objectToVerify mock对象
        * methodToVerify 要验证的方法
        * argumrnts 待验证方法的验证参数
        * Mockito.times(num) 待验证方法被执行次数
        * 验证该 mock 对象的 methodToVerify 方法被执行 num 次并且入参是 arguments
        */
        Mockito.verify(objectToVerify,Mockito.times(num)).methodToVerify(arguments);
        1. times(num) 被执行 num 次

        2. atMost(num) 最多被执行 num 次

        3. atLeast(num) 最少被执行 num 次

        4. never() 从未被执行

      2. methodToVerify 中 arguments 的 any 方法

        1. 验证方法参数固定类型

          /**
          * objectToVerify mock对象
          * methodToVerify 要验证的方法
          * argumrnts 待验证方法的验证参数
          * Mockito.anyString() 入参为任意字符串对象,支持 null
          * 验证该 mock 对象的 methodToVerify 方法被执行并且入参是 arguments
          */
          Mockito.verify(objectToVerify).methodToVerify(Mockito.anyString());

           

        2. 类似 anyString ,还有 anyInt, anyLong, anyDouble 等等。 anyObject 表示任何对象, any(clazz) 表示任何属于clazz的对象。还有非常有意思也非常人性化的 anyCollection,anyCollectionOf(clazz), anyList(Map, set), anyListOf(clazz) 等等

  3. Mockito 验证方法行为

    1. 指定mock对象的某个方法返回特定的值。

      /**
      * mockObject mock对象
      * targetMethod(args) 要拦截的方法,必须args匹配
      * thenReturn 拦截后返回的内容为 desiredReturnValue
      */
      Mockito.when(mockObject.targetMethod(args)).thenReturn(desiredReturnValue);

       

    2. 指定mock对象的一个方法执行特定的动作

      /**
      * desiredAnswer 一个Answer对象,指定特定的动作
      */
      Mockito.doAnswer(desiredAnswer).when(mockObject).targetMethod(args);

       

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值