首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

五分钟了解Mockito

2012-08-31 
5分钟了解Mockito?一、什么是mock测试,什么是mock对象??先来看看下面这个示例:从上图可以看出如果我们要对A

5分钟了解Mockito

?一、什么是mock测试,什么是mock对象?

?

先来看看下面这个示例:

五分钟了解Mockito

从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。

?

一种替代方案就是使用mocks

五分钟了解Mockito

从图中可以清晰的看出

mock对象就是在调试期间用来作为真实对象的替代品。

mock测试就是在测试过程中,对那些不容易构建的对象用一个虚拟对象来代替测试的方法就叫mock测试。

知道什么是mock测试后,那么我们就来认识一下mock框架---Mockito

?

二、什么是Mockito

除了有一个好记的名字外,Mockito尝试用不一样的方法做mocking测试,是简单轻量级能够替代EasyMock的框架。使用简单,测试代码可读性高,丰富的文档包含在javadoc中,直接在IDE中可查看文档,实例,说明。更多信息:http://code.google.com/p/mockito/

?

三、Stub和Mock

相同点:Stub和Mock对象都是用来模拟外部依赖,使我们能控制。

不同点:而stub完全是模拟一个外部依赖,用来提供测试时所需要的测试数据。而mock对象用来判断测试是否能通过,也就是用来验证测试中依赖对象间的交互能否达到预期。在mocking框架中mock对象可以同时作为stub和mock对象使用,两者并没有严格区别。 更多信息:http://martinfowler.com/articles/mocksArentStubs.html

?

四、mockito入门实例

Maven依赖:(没用maven管理的直接忽略)

?

?

创建mock对象不能对final,Anonymous ,primitive类进行mock。

?

可对方法设定返回异常

?

@Testpublic void verifyInvocate(){List<String> mockedList = mock(List.class);//using mock  mockedList.add("once"); mockedList.add("twice"); mockedList.add("twice");  mockedList.add("three times"); mockedList.add("three times"); mockedList.add("three times");  /**  * 基本的验证方法  * verify方法验证mock对象是否有没有调用mockedList.add("once")方法  * 不关心其是否有返回值,如果没有调用测试失败。  */ verify(mockedList).add("once");  verify(mockedList, times(1)).add("once");//默认调用一次,times(1)可以省略   verify(mockedList, times(2)).add("twice"); verify(mockedList, times(3)).add("three times");  //never()等同于time(0),一次也没有调用 verify(mockedList, times(0)).add("never happened");  //atLeastOnece/atLeast()/atMost() verify(mockedList, atLeastOnce()).add("three times"); verify(mockedList, atLeast(2)).add("twice"); verify(mockedList, atMost(5)).add("three times");}
?

?

一次写不完,慢慢分析。。。

参考:

http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/Mockito.html

http://www.sizovpoint.com/2009/03/java-mock-frameworks-comparison.html

http://wenku.baidu.com/view/8def451a227916888486d73f.html

http://qiuguo0205.iteye.com/blog/1443344

?

热点排行