Mockito是一个流行的Mocking框架。它使用起来简单,学习成本很低,而且具有非常简洁的API,测试代码的可读性很高。因此它十分受欢迎,用 户群越来越多,很多的开源的软件也选择了Mockito。要想了解更多有关Mockito的信息,请访问它的官方网 站:http://mockito.org/ 
在开始使用Mockito之前,先简单的了解一下Stub和Mock的区别。  Stub对象用来提供测试时所需要的测试数据,可以对各种交互设置相应的回应。例如我们可以设置方法调用的返回值等等。Mockito中 when(…).thenReturn(…) 这样的语法便是设置方法调用的返回值。另外也可以设置方法在何时调用会抛异常等。Mock对象用来验证测试中所依赖对象间的交互是否能够达到预期。 Mockito中用 verify(…).methodXxx(…) 语法来验证 methodXxx方法是否按照预期进行了调用。有关stub和mock的详细论述见,Martin Fowler文章《Mocks Aren't Stub》http://martinfowler.com/articles/mocksArentStubs.html。在Mocking框架中所谓 的mock对象实际上是作为上述的stub和mock对象同时使用的。因为它既可以设置方法调用返回值,又可以验证方法的调用。 
Mockito的获取  Jar包的获取  可以访问下面的链接来下载最新的Jar包,笔者使用的当前最新版为:1.8.5 http://code.google.com/p/mockito/downloads/list 
Maven  如果项目是通过Maven管理的,需要在项目的Pom.xml中增加如下的依赖:

  1. <dependencies>
  2. <dependency>
  3. <groupId>org.mockito</groupId>
  4. <artifactId>mockito-all</artifactId>
  5. </version>
  6. <scope>test</scope>
  7. </dependency>
  8. </dependencies>
  1. <dependencies>
  2. <dependency>
  3. <groupId>org.mockito</groupId>
  4. <artifactId>mockito-all</artifactId>
  5. </version>
  6. <scope>test</scope>
  7. </dependency>
  8. </dependencies>

Mocktio包的引入  在程序中可以import org.mockito.Mockito;然后调用它的static方法,或者import static org.mockito.Mockito.*;个人倾向于后者,因为这样可以更方便些。 
一个简单的例子

  1. import   static  org.junit.Assert.*;
  2. import   static  org.mockito.Mockito.*;
  3. import  java.util.Iterator;
  4. import  org.junit.Test;
  5. /**
  6. *
  7. * @author Brian Zhao
  8. */
  9. public   class  SimpleTest {
  10. @Test
  11. public   void  simpleTest(){
  12. //arrange
  13. Iterator i=mock(Iterator.class );
  14. when(i.next()).thenReturn("Hello" ).thenReturn( "World" );
  15. //act
  16. String result=i.next()+" " +i.next();
  17. //verify
  18. )).next();
  19. //assert
  20. assertEquals("Hello World" , result);
  21. }
  22. }
  1. import static org.junit.Assert.*;
  2. import static org.mockito.Mockito.*;
  3. import java.util.Iterator;
  4. import org.junit.Test;
  5. /**
  6. *
  7. * @author Brian Zhao
  8. */
  9. public class SimpleTest {
  10. @Test
  11. public void simpleTest(){
  12. //arrange
  13. Iterator i=mock(Iterator.class);
  14. when(i.next()).thenReturn("Hello").thenReturn("World");
  15. //act
  16. String result=i.next()+" "+i.next();
  17. //verify
  18. )).next();
  19. //assert
  20. assertEquals("Hello World", result);
  21. }
  22. }

在上面的例子中包含了Mockito的基本功能:  创建Mock对象  创建Mock对象的语法为,mock(class or interface)。例子中创建了Iterator接口的mock对象。 
设置方法调用的预期返回  通过when(mock.someMethod()).thenReturn(value) 来设定mock对象某个方法调用时的返回值。例子中我们对Iterator接口的next()方法调用进行了预期设定,当调用next()方法时会返 回”Hello”,由于连续设定了返回值,因此当第二次调用时将返回”World”。 
验证方法调用  接下来对mock对象的next()方法进行了一系列实际的调用。mock对象一旦建立便会自动记录自己的交互行为,所以我们可以有选择的对它的 交互行为进行验证。在Mockito中验证mock对象交互行为的方法是verify(mock).someMethod(…)。于是用此方法验证了 next()方法调用,因为调用了两次,所以在verify中我们指定了times参数(times的具体应用在后面会继续介绍)。最后assert返回 值是否和预期一样。

Mockito学习(zz)的更多相关文章

  1. mockito学习

    mockito学习 写一个测试用例,如果在测试类上面添加了注解@RunWith(SpringJUnit4ClassRunner.class),必须添加@ContextConfiguration(&qu ...

  2. Mockito学习1

    Mockito学习1 junitmaven软件测试框架项目管理  Mockito是一个流行的Mocking框架.它使用起来简单,学习成本很低,而且具有非常简洁的API,测试代码的可读性很高.因此它十分 ...

  3. Mockito 学习资料

    Mockito 学习资料 网址 单元测试指南:Mockito https://blinkfox.github.io/2018/11/15/hou-duan/java/dan-yuan-ce-shi-z ...

  4. Mockito学习资料

    官网:http://mockito.org/ https://dzone.com/refcardz/mockito

  5. 《科学》封面:人工智能终于能像人类一样学习 zz

    原文地址:http://tech.sina.com.cn/d/i/2015-12-12/doc-ifxmpnqi6368668.shtml science   Human-level concept ...

  6. 英语学习[ZZ]

    本文作者三年间从四级勉强及格到高级口译笔试210,口试232.找工作面试时给其口试的老外考官听了一分钟就说你的英语不用考了.虽不敢说方法一定是最好的,但从现在开始随便谁不要再去找学习资料,每天花两个钟 ...

  7. mockito学习笔记

    mockito http://mockito.github.io/mockito/docs/current/org/mockito/Mockito.html

  8. 海量数据处理面试题学习zz

    来吧骚年,看看海量数据处理方面的面试题吧. 原文:(Link, 其实引自这里 Link, 而这个又是 Link 的总结) 另外还有一个系列,挺好的:http://blog.csdn.net/v_jul ...

  9. mockito使用

    mockito学习资料: http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html http://blog.csdn.net/sdy ...

随机推荐

  1. 调css时候,设置margin-left没有效果

    调css时候,如果设置margin-left没有效果,可能是span不是块元素.设置display:block;即可.

  2. 设置input标签的placeholder的样式

    设置input样式代码: input::-webkit-input-placeholder{ /*WebKit browsers*/ color: red; } input::-moz-input-p ...

  3. openvpn 使用账户密码认证

    OpenVPN使用user/passwd完成验证登录 OpenVPN使用user/passwd完成验证登录1,为什么要使用user/passwd?比常规openvpn管理方便,删除用户只需要在pwd. ...

  4. pta7-7旅游规划(dijkstra算法)

    题目链接:https://pintia.cn/problem-sets/1101307589335527424/problems/1101314114762387456 题意:给n给城市,m条公路,公 ...

  5. Centos 下使用VLAN+Bridge 搭建KVM基础网络环境

    一.使用环境介绍 宿主机上同时运行多网段虚拟机,为了解决宿主机网卡资源紧张问题,采用如下网络模式:(本实验vlan 105:192.168.5.x    vlan108:192.168.8.x) 二. ...

  6. checkbox/radio 样式修改

    只改颜色 input[type=radio],input[type=checkbox] { display: inline-block; vertical-align: middle; width: ...

  7. 承载地图的div如果隐藏再显示,则定位时会定位到页面左上角

    承载地图的div如果隐藏再显示,则定位时会定位到页面左上角. 解决方法:不隐藏,改变div的高度.在div上利用z-index加一个新的不透明的div.

  8. spring mybatis springmvc整合

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  9. Wannafly挑战赛13 B:Jxc军训(逆元)

    题目描述 在文某路学车中学高一新生军训中,Jxc正站在太阳下站着军姿,对于这样的酷热的阳光,Jxc 表示非常不爽. Jxc将天空看做一个n*n的矩阵,此时天上有m朵云,这些云会随机分布在m个不同的位置 ...

  10. java获取电脑部分信息

    获取mac地址与cpu序列号 参考博客:https://www.jb51.net/article/94793.htm 另一篇参考地址没记录下来 package util; import java.io ...