美文网首页
Mockito简介和代码示例

Mockito简介和代码示例

作者: 测试你个头 | 来源:发表于2017-03-02 13:38 被阅读0次

Mockito简介和示例

Mockito也是一个开源的mock工具包,和EasyMock不同的时,它不需要录制、播放这些动作,语法上更灵活,可读性更强

官网:mockito
官方文档:mockito.html

范例代码

1.maven工程的话,首先引入pom包:

<dependency>
    <groupId>org.mockito</groupId>
    <artifactId>mockito-core</artifactId>
    <version>2.7.12</version>
    <scope>test</scope>
</dependency>

2.测试类中引入静态资源:

import static org.mockito.Mockito.*; 

3.支持以下特性:(源码来自官方文档)

  • 验证行为有没有被调用过
//create mock
List mockedList = mock(List.class);
//use mock object
mockedList.add("one");
mockedList.clear();
//验证add方法是否在前面被调用了一次,且参数为“one”。clear方法同样。
verify(mockedList).add("one");
verify(mockedList).clear();
//下面的验证会失败。因为没有调用过add("two")。
verify(mockedList).add("two");
  • 插桩:使mock对象的方法返回期望值
    对于没有stub过的有返回值的方法,会返回默认值(0,false,null等)
//stubbing。当get(0)被调用时,返回"first". 方法get(1)被调用时,抛异常。
when(mockedList.get(0)).thenReturn("first");
when(mockedList.get(1)).thenThrow(new RuntimeException());

重复stub

//重复stub,以最后一次为准,如下将返回"second":
when(mockedList.get(0)).thenReturn("first");
when(mockedList.get(0)).thenReturn("second");
//如下表示第一次调用时返回“first”,第二次调用时返回“second”。可以写n个。
when(mockedList.get(0)).thenReturn("first").thenReturn("second");
如果实际调用的次数超过了stub过的次数,则返回最后一次stub的值。
例如第三次调用get(0)时,则会返回"second".
  • 参数匹配
    如果想实现get(任意整数)时,都返回null,如何做?
when(mockedlist.get(anyInt())).thenReturn(null);

有许多的arguments matcher,参考More ArgumentMatchers
Argument matcher支持定制

  • 验证方法被调用了特定次数/至少x次/最多x次/从未被调用
//是否add("twice")被调用了两次。
verify(mockedList, times(2)).add("twice");
//验证add("twice")被调用了至少一次。以及其他。
verify(mockedList, atLeastOnce()).add("twice");
verify(mockedList, atLeast(2)).add("twice");
verify(mockedList, atMost(5)).add("twice");
verify(mockedList, never()).add("twice");
  • 调用方法时抛出异常
doThrow(new RuntimeException()).when(mockedList).clear();
  • 验证顺序
    一个mock对象的方法以特定顺序被调用多次
    多个mock对象以特定顺序被调用多次
inOrder.verify(firstMock).add("was called first");
inOrder.verify(secondMock).add("was called second");

其中,插桩(stubbing)mock对象的返回值是测试中最常用到的

相关文章

  • Mockito简介和代码示例

    Mockito简介和示例 Mockito也是一个开源的mock工具包,和EasyMock不同的时,它不需要录制、播...

  • EasyMock简介和代码示例

    关于EasyMock: 官网:easymock.org 注意: EasyMock范例(Service层代码单元测试...

  • Mock和Mockito简介

    本篇对Mock和Mockito做了简单的介绍,并列出了简单的示例.使用Mockito需要基于JUnit,所以不了解...

  • #前端开发工程师

    Vue.js路由 @(示例)[帮助] 简介 HTML代码 js代码

  • lmdb简介及示例代码

    lmdb是一款开源的高效快速的内存映射数据库,C语言编写,基于B+树索引,支持MVCC事务处理。它不是一个需要独立...

  • Android单元测试-Mockito 浅析

    本文主要针对测试框架 Mockito 在实践中的经常用到的代码做一示例汇总,并对其实现思想做以简单的分析。 介绍 ...

  • Mockito浅谈

    Mockito浅谈 [TOC] Mockito简介 什么是mock?在软件开发的世界之外, "mock"一词是指模...

  • tensorflow示例学习--壹 mnist_softmax.

    转载请注明出处。 一、简介: 二、示例代码 三、API接口

  • day3-CSS属性

    1.标准流和浮动 代码示例 2.display属性 代码示例 3.float属性 代码示例 4.清除浮动 代码示例...

  • Android 圆角闪光遮照效果

    效果图 实现原理 代码创建自定义属性自定义控件使用方法 PorterDuff.Mode 简介示例图代码示例Port...

网友评论

      本文标题:Mockito简介和代码示例

      本文链接:https://www.haomeiwen.com/subject/tmxfgttx.html