欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Mockito学习笔记

程序员文章站 2022-04-27 10:58:11
...
  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);

       

相关标签: Mockito