`
zhangjijun
  • 浏览: 37667 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Mockito工具的简单实用方法,编写用例时无需为底层或尚未实现的接口临时实现一个类,附上简单教程以供参考

 
阅读更多

MOCK的好处主要是在于以下几方面:

1.用例不依赖外部环境(文件系统,操作系统等)

2.用例不依赖外部实现

3.TDD中预先模拟周边模块实现而无需编写一个完整的类

入门

以下内容均参考至http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/Mockito.html。

在任何应用Mockito的地方,

加上如下片段:

Java代码   
1.  import static org.mockito.Mockito.*;    
   
模拟对象  
Java代码   
1.  // 模拟LinkedList 的对象    
2.  LinkedList mockedList = mock(LinkedList.class);    
3.      
4.  // 此时调用get方法,是会返回null,因为还没有对方法调用的返回值做模拟     
5.  System.out.println(mockedList.get(999));    
   
 模拟方法调用的返回值  
   
Java代码   
1.  // 模拟获取第一个元素时,返回字符串first    
2.  when(mockedList.get(0)).thenReturn("first");    
3.      
4.  // 此时打印输出first    
5.  System.out.println(mockedList.get(0));    
   
模拟方法调用抛出异常  
Java代码   
1.  // 模拟获取第二个元素时,抛出RuntimeException    
2.  when(mockedList.get(1)).thenThrow(new RuntimeException());    
3.      
4.  // 此时将会抛出RuntimeException    
5.  System.out.println(mockedList.get(1));    
 没有返回值类型的方法也可以模拟异常抛出:  
  
Java代码   
1.  doThrow(new RuntimeException()).when(mockedList).clear();    
   
模拟方法调用的参数匹配  
Java代码   
1.  // anyInt()匹配任何int参数,这意味着参数为任意值,其返回值均是element    
2.  when(mockedList.get(anyInt())).thenReturn("element");    
3.      
4.  // 此时打印是element    
5.  System.out.println(mockedList.get(999));    
 更灵活的参数匹配,请参见http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/Matchers.html  
  
验证方法调用次数  
Java代码   
1.  // 调用add一次    
2.  mockedList.add("once");    
3.      
4.  // 下面两个写法验证效果一样,均验证add方法是否被调用了一次    
5.  verify(mockedList).add("once");    
6.  verify(mockedList, times(1)).add("once");    
 还可以通过atLeast(int i)和atMost(int i)来替代time(int i)来验证被调用的次数最小值和最大值。  

 

 

 

上面仅列举了一些常用的,更多用法和技巧还请详细参考http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/Mockito.html。

分享到:
评论

相关推荐

    JAVA接口自动化测试MyBatis+MySQL实现用例管理

    我们可以创建一个测试类,为每个接口编写对应的测试方法,利用HTTP客户端如HttpURLConnection或Apache HttpClient来模拟客户端请求。 MyBatis作为数据访问层,可以帮助我们更方便地操作MySQL数据库。在自动化测试中...

    mockito中文文档.zip

    Mockito 是一个流行的 Java 单元测试框架,用于模拟(mock)对象,使得开发者可以在测试代码中隔离依赖,专注于测试单个组件的行为。TDD(Test-Driven Development,测试驱动开发)是它常被结合使用的一种开发模式,...

    mockito-1.9.5.zip

    这是Mockito库的JAR文件,包含了Mockito的所有类和方法,供项目引用以使用Mockito框架。 5. **LICENSE 和 NOTICE**: 这两个文件分别包含了Mockito的许可协议和版权信息,确保你在使用时遵循正确的开源许可条款。...

    Mockito-Programming-Cookbook

    **Mockito** 是一个开源的 Java 测试框架,它被设计用于帮助开发者创建模拟对象(mock objects),以便于进行单元测试,支持 **Test-Driven Development (TDD)** 和 **Behavior Driven Development (BDD)** 的开发...

    Junit4.12+mockito

    **Mockito** 是另一个重要的工具,它是一个模拟(Mocking)库,允许开发者在测试中创建并控制对象的行为,尤其是那些难以在孤立环境中操作的依赖对象。Mockito.jar 包含了实现这一功能的所有类和方法。在单元测试中...

    Junit测试 简单用例

    3. 编写测试用例:以`testCase`为例,可以定义一个测试整数加法的测试用例: ```java @Test public void testAdd() { int result = add(1, 2); assertEquals(3, result); } ``` 这个测试用例会调用`add`方法并检查...

    一个Mockito的Demo

    在进行单元测试时,经常需要测试一个类中与其他类相协作的部分,而模拟这些协作类可以使得测试更加独立、简洁,并且避免了对真实服务的依赖。 一个典型的Mockito测试流程包括以下几个步骤:首先,创建被测试对象的...

    Mock工具Mockito(处理方案示例).md

    Mockito是一个流行的Java模拟框架,它被广泛应用于单元测试中,以模拟和测试代码中依赖的外部组件。通过Mockito,开发者能够创建虚拟对象,模拟实际的数据库、网络服务、硬件或其他复杂系统的行为,从而使测试聚焦于...

    mockito-sample:在JUnit测试用例中如何使用Mockito创建模拟对象的快速示例

    在本示例中,我们可能会看到如 `@Test` 注解,它标记了一个方法为测试方法,以及 `assertEquals` 或 `assertNull` 等断言方法,用于验证代码行为。 **Mockito** Mockito 是一个模拟框架,它允许我们在测试中替换...

    springboot helloworld程序(带简单测试用例)

    这个程序旨在展示如何快速地搭建一个基于SpringBoot的应用,并包含简单的测试用例来验证功能。以下将详细讲解SpringBoot的基本概念、HelloWorld程序的构建过程以及测试用例的重要性。 SpringBoot是由Pivotal团队...

    junit+mockito

    在编写测试用例时,首先需要使用JUnit提供的注解来标记测试方法,比如@Test注解,表示这是一个测试方法。在测试中可能会用到依赖项,如果直接使用真实的依赖项对象,将会带来测试的复杂性,比如需要处理网络、数据库...

    Mockito+Junit5测试方法实践

    内容概要:参考Mockito官方API文档,实践框架每个特性。 适合人群:Mockito入门人员以及想全面熟悉Mockito特性的人员,做到了开箱即用。 能学到什么:“Mockito 4.6.0 + Junit 5”的组合编程。 使用建议:使用前安装...

    JUnit测试用例编写深度剖析.rar

    1. 创建测试类:在Java类中定义一个公共类,命名为待测试类名加"Test"。 2. 编写测试方法:在测试类中,每个测试方法都应独立且自包含,以确保测试的隔离性。 3. 使用注解:@Test注解标记测试方法,可以添加expected...

    java.Mock工具Mockito(解决方案).md

    创建模拟对象可以使用mock()方法,该方法接受一个类或接口的Class对象作为参数,并返回一个模拟实例。随后,可以使用when().thenReturn()方法对模拟对象的方法调用进行预期结果的设定。例如,可以对UserService类的...

    spring集成TestNG与Mockito框架单元测试方法

    `when(...).thenReturn(...)`语句定义了`userRepository.getUserById`方法的行为,当被调用时返回一个预设的`User`对象。最后,`Assert.assertEquals`验证了`userService.getUserById`的返回值是否符合预期。 在...

    spring集成TestNG与Mockito框架单元测试方法.pdf

    Spring集成TestNG与Mockito框架单元测试方法的文档详细介绍了如何在Java Spring项目中,利用TestNG和Mockito框架进行单元测试。这种测试方法可以帮助开发者快速上手单元测试,并确保代码质量。文档涉及了多个方面,...

    PowerMock+Mockito-junit测试套件1.6.3版本

    PowerMock是一个扩展了其他Mocking框架(如EasyMock和Mockito)的库,它允许开发者对静态方法、构造函数、final类和方法、私有方法以及删除静态初始化器进行模拟和mock。在传统测试框架中,这些通常是难以或无法测试...

    测试用例8-10个

    "测试用例8-10个"可能指的是一个项目或教程中提供的多个测试用例,这些用例旨在覆盖各种输入情况,以确保代码的全面性和可靠性。 "单元测试网上资料汇集"标签表明这个压缩包可能包含了一系列与单元测试相关的资源,...

    powermock-mockito-junit-1.6.3.zip 当前最新版

    PowerMock-Mockito-JUnit-1.6.3.zip 是一个包含最新版本的 PowerMock、Mockito 和 JUnit 库的压缩文件。这些工具在Java开发中被广泛用于单元测试和模拟,尤其对于处理静态方法、构造器、final类和方法、私有方法等...

    JUnit in java 真正的测试用例实战.doc

    - 测试方法:以`test`开头的方法,每个方法对应一个特定的测试场景,调用待测试的方法并验证其结果。 在生成的测试类中,`fail("尚未实现");`表示该测试方法尚未编写具体测试逻辑,需要根据实际代码功能进行实现。...

Global site tag (gtag.js) - Google Analytics