学习Mockito框架

转自 : http://developer.51cto.com/art/201104/255127.htm

原文:http://javasee.iteye.com/blog/1000868

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中增加如下的依赖:

Java代码

 
 
  1.      
  2.      
  3. org.mockito     
  4. mockito-all     
  5. 1.8 . 5      
  6. test     
  7.      
  8.     

Java代码

 
 
  1.      
  2.      
  3. org.mockito     
  4. mockito-all     
  5. 1.8.5     
  6. test     
  7.      
  8.   

Mocktio包的引入

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

一个简单的例子

Java代码

 
 
  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.  *      
  8.  * @author Brian Zhao     
  9.  */      
  10. public   class  SimpleTest {     
  11.          
  12.     @Test      
  13.     public   void  simpleTest(){     
  14.         //arrange      
  15.         Iterator i=mock(Iterator.class );     
  16.         when(i.next()).thenReturn("Hello" ).thenReturn( "World" );     
  17.         //act      
  18.         String result=i.next()+" " +i.next();     
  19.         //verify      
  20. verify(i, times(2 )).next();     
  21.         //assert      
  22.         assertEquals("Hello World" , result);     
  23.     }     
  24. }     

Java代码

 
 
  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.  *     
  8.  * @author Brian Zhao    
  9.  */    
  10. public class SimpleTest {     
  11.          
  12.     @Test    
  13.     public void simpleTest(){     
  14.         //arrange     
  15.         Iterator i=mock(Iterator.class);     
  16.         when(i.next()).thenReturn("Hello").thenReturn("World");     
  17.         //act     
  18.         String result=i.next()+" "+i.next();     
  19.         //verify     
  20. verify(i, times(2)).next();     
  21.         //assert     
  22.         assertEquals("Hello World", result);     
  23.     }     
  24. }    

在上面的例子中包含了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返回值是否和预期一样。





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 是的,Mockito是一个流行的Java单元测试框架,用于创建和测试Java代码中的模拟对象。它使用简单的语法和强大的功能来帮助您测试Java代码。 以下是一份简短的Mockito教程,涵盖了Mockito的一些基本功能: 1. 安装Mockito:在您的项目中使用Mockito,您需要将其添加为依赖项。在Maven项目中,您可以通过将以下依赖项添加到您的pom.xml文件中来安装Mockito: ``` <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-core</artifactId> <version>2.23.4</version> <scope>test</scope> </dependency> ``` 2. 创建模拟:使用Mockito创建模拟对象非常简单。只需调用Mockito的mock()方法即可创建模拟对象。例如,假设您想要创建一个List接口的模拟对象,可以这样做: ``` List<String> mockList = mock(List.class); ``` 3. 设置预期行为:您可以使用Mockito的when()方法来设置模拟对象的预期行为。例如,假设您希望在调用mockList的get()方法时返回一个特定的值,可以这样做: ``` when(mockList.get(0)).thenReturn("first value"); ``` 4. 验证行为:您可以使用Mockito的verify()方法来验证模拟 ### 回答2: 是的,Mockito是一个用于Java的流行的mocking框架Mockito框架可以让开发者轻松地创建和管理测试中的模拟对象,从而使单元测试更加简洁和可靠。 Mockito框架提供了一套简单而强大的API,用于创建和操作模拟对象。使用Mockito,您可以模拟依赖关系的行为,以便更轻松地编写单元测试。Mockito还提供了丰富的方法和功能,用于验证模拟对象的交互和调用。 Mockito框架的官方网站上有详细的教程和文档,您可以通过访问https://site.mockito.org/来获取最新的教程和指南。在官方网站上,您可以找到关于Mockito的入门教程、高级用法、示例代码等资源。此外,还有一些社区编写的博客和教程,可以帮助您更深入地了解如何使用Mockito。 如果您需要教程的详细副本,我建议您下载Mockito的官方文档或购买一本相关书籍。这些资源将会提供更全面的指导,帮助您充分掌握和应用Mockito框架。最重要的是,通过实践和阅读实际案例,您将能够更好地理解和应用Mockito的各种功能和技术。 ### 回答3: Mockito是一个流行的Java测试框架,用于创建和管理模拟对象以进行单元测试。Mockito框架的教程可以在许多地方找到,包括官方网站、在线教程和书籍。以下是一份简短的Mockito框架教程: 1. 官方网站:你可以访问Mockito的官方网站(https://site.mockito.org/)获取关于框架的详细信息和文档。官方网站提供了完整的教程、示例代码、API文档以及常见问题解答等资源。 2. 在线教程:许多网站提供关于Mockito框架的在线教程,其中一些是免费的。你可以通过搜索“Mockito教程”来找到这些资源。一些知名的在线教程网站还提供了互动实例,让你可以在线尝试Mockito框架的用法。 3. 书籍:还有一些书籍专门介绍和讲解Mockito框架的使用。其中一本经典的书籍是《Mockito Cookbook》。这本书提供了丰富的示例代码和解释,适合想深入学习Mockito框架的人。 总之,Mockito框架的教程资源很丰富,你可以根据自己的需求选择合适的学习方式。无论是官方网站、在线教程还是书籍,它们都是学习和掌握Mockito框架的好帮手。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值