Mockito是一种mock工具/框架。我理解EasyMock有点过期了,Mockito是如今比较流行的。 框架
什么是mock?说的直白一点,你们都知道unit test应该是尽量独立的。对一个class的unit test不该该再和其余class有任何交互。 工具
如今有一个类,扫描一个目录并将找到的文件都上传到FTP server。该类对于不一样的FTP响应(找不到FTP server 或 上传成功,或上传失败),有一些后续操做。 测试
在写这个类的UT时,咱们就必须虚构出来一个FTP对象。这样在UT中,这个虚构的对象可以代替真正的FTP,对被测试类的调用作出必定的响应。从而知道被测试类是否正确的调用了FTP并作出一些正确的指望的响应。从而达到测试的目的。 spa
mock能够模拟各类各样的对象,从而代替真正的对象作出但愿的响应。 .net
关于mock的概念和EasyMock,能够参考: server
Mock object and EasyMock framework 对象
http://blog.csdn.net/OnlyQi/archive/2011/04/26/6364885.aspx blog
官网:http://mockito.org/ element
一篇很好的入门文章: 字符串
http://blog.csdn.net/huoshuxiao/archive/2010/12/30/6107835.aspx
一些稍微复杂且实用一点的例子:
http://gojko.net/2009/10/23/mockito-in-six-easy-examples/
下面介绍mockito的基本使用方法。
如前面所说,咱们须要建立一个mock对象来代替真的对象。
所以,
模拟对象是第一步。模拟对象使用mock();
指定mock对象被调用时的返回值是第二步,好比指定让mockFTP对象第一次被调用时返回"找不到FTP server"。这一步通常称为stubbing。通常是when(mockedList.get(0)).thenReturn("first")的样子。
验证被测试类是否正确工做是第三步,使用verify()。例如,验证当mockFTP对象返回"找不到FTP server"时,测试代码是否按要求重试。
而后测试就完成啦~~
模拟对象:
模拟方法调用的返回值:
好比
模拟方法调用抛出异常:
doThrow(new RuntimeException()).when(mockedList).clear();
模拟调用方法时的参数匹配:
模拟方法调用次数: