转自:http://zhongl.iteye.com/blog/296136
简介
InfoQ-使用Mockito 1.5监视普通对象 写道
Mockito是一个针对Java的mocking框架。它与EasyMock和jMock很相似,但是通过在执行后校验什么已经被调用,它消除了对期望行为(expectations)的需要。其它的mocking库需要你在执行前记录期望行为(expectations),而这导致了丑陋的初始化代码。
更多信息请参考如下位置,
原文链接:
http://www.infoq.com/cn/news/2008/09/mockito-1.5
官方网站:
http://code.google.com/p/mockito/
入门
以下内容均参考至
http://mockito.googlecode.com/svn/branches/1.6/javadoc/org/mockito/Mockito.html。
在任何应用Mockito的地方,加上如下片段:
Java代码
1.import static org.mockito.Mockito.*;
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));
// 模拟LinkedList 的对象
LinkedList mockedList = mock(LinkedList.class);
// 此时调用get方法,是会返回null,因为还没有对方法调用的返回值做模拟
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));
// 模拟获取第一个元素时,返回字符串first
when(mockedList.get(0)).thenReturn("first");
// 此时打印输出first
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));
// 模拟获取第二个元素时,抛出RuntimeException
when(mockedList.get(1)).thenThrow(new RuntimeException());
// 此时将会抛出RuntimeException
System.out.println(mockedList.get(1));
没有返回值类型的方法也可以模拟异常抛出:
Java代码
1.doThrow(new RuntimeException()).when(mockedList).clear();
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));
// anyInt()匹配任何int参数,这意味着参数为任意值,其返回值均是element
when(mockedList.get(anyInt())).thenReturn("element");
// 此时打印是element
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");
// 调用add一次
mockedList.add("once");
// 下面两个写法验证效果一样,均验证add方法是否被调用了一次
verify(mockedList).add("once");
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。让Mockito使测试驱动开发更有趣吧!
分享到:
相关推荐
适合人群:Mockito入门人员以及想全面熟悉Mockito特性的人员,做到了开箱即用。 能学到什么:“Mockito 4.6.0 + Junit 5”的组合编程。 使用建议:使用前安装好Maven及Java即可,推荐使用VSCode编辑。
Mockito 是单元测试中的一种常用技术,掌握Mockito对单元测试有重要影响
#README ##这是一个关于使用Mock来进行单元测试构建的实例 原文的地址: 翻译后:
入门 将Maven项目直接导入到Java IDE: Intellij IDEA 弹簧工具套件(STS) 蚀 (可选)要与其他RDBMS一起使用,您需要配置与数据库URL,用户名,密码匹配的项目“ application.properties”文件,并添加所需的...
spring 总的概述。。。入门好教程~~~~~~~~~~~~~
本文介绍和对比了TestNG和junit框架,并举出实例说明。 同时讲解了Mockito和Dbunit框架的使用
Spring测试入门 Spring Boot提供了许多实用程序和注释,可以在测试应用程序时提供帮助。 测试支持由两个模块提供: spring-boot-test :包含核心项 spring-boot-test-autoconfigure : spring-boot-test-...
它具有以下依赖项,包含在 JAR 中: 灰熊 HTTP 服务器 2.3.16 杰克逊 FasterXML 2.4.3 MongoDB 驱动程序 2.12.4 JUnit 4.9 Mockito 1.10.8入门为了运行此 API,您需要执行以下操作(下面有更详细的说明): 克隆这个...
Mockito 1.9.5 入门 在您的IDE中启用注释处理(Lombok需要它) 安装Maven依赖项/将此存储库导入为Maven项目。 使用主类运行应用程序: SortingAlgorithmsAppLauncher 算法基准 An algorithm is a set of ...
入门 Eclipse- https://courses.in28minutes.com/p/eclipse-tutorial-for-beginners Maven- https://courses.in28minutes.com/p/maven-tutorial-for-beginners-in-5-steps JUnit- ...
使用JUnit和Mockito实现的单元测试。 集成测试使用Spring Test。 目标运行时环境:Apache Tomcat。应用的Gradle功能Gradle包装器的用法。 部署到嵌入式容器以进行本地开发。运行应用程序您可以直接在本地计算机上...
Spring MVC 4 快速入门 Maven 原型 概括 该项目是 Spring MVC 4 Web 应用程序的 Maven 原型。 生成的项目特征 适用于 Servlet 3.0 环境的 No-xml Spring MVC 4 Web 应用程序 百里香、Bootstrap JPA 2.0 (Hibernate/...
Spring MVC 4快速入门Maven原型概括该项目是Spring MVC 4 Web应用程序的Maven原型。生成的项目特征用于Servlet 3.0环境的No-xml Spring MVC 4 Web应用程序胸腺,引导JPA 2.0(Hibernate / HSQLDB / Spring Data JPA...
-> DTO的映射器记录中测验使用DataJpaTest的存储库使用DataMongoTest的存储库使用Mockito的服务使用WebMvcTest的端点使用OpenPojo的Pojos和Dtos JMX入门使用Docker简化开发本教程的目的是提供一个Producer消费者...
Boot的服务模板设置Open API文档Log4j的安装程序以及与Azure App Insights的集成设置普罗米修斯指标与Cosmos DB集成使用Mockito-Kotlin进行组件测试的示例设置带有Spring合同测试示例的设置设置示例以使用Gatling...
德宾德杰克逊核心Hibernate4.3.11.Final Java Servlet API 3.1.0 JUnit的Log4j API 2.13.0 PostgreSQL 42.2.18 Mockito 1.8.4特征提交报销请求批准/拒绝报销请求将项目添加到您的请求入门/用法为了看到该项目的实际...
广泛的Spring MVC测试+ Mockito 冬眠 查询DSL 该项目提供了灵感和用例,以创建用于处理查询字符串的thymeleaf扩展。 包含一个使用此项目的视频教程,以演示与spring数据PagingAndSortingRepository的集成。 入门 ...
1个弹性工作日,从事项目和/或入门课程 3周的团队项目 三天冲刺(Scrum) 担任Scrum Master和产品所有者的员工 每周细目 第一周 文件系统 变量,运算符,表达式,基本类型 有条件的 字符串和文字处理常用表达* Git...
入门 这些说明将为您提供在本地计算机上运行并运行的项目的副本,以进行开发和测试。 有关如何在实时系统上部署项目的注释,请参阅部署。 先决条件 为了成功执行该程序,需要安装许多依赖项。 这些是: 1. 正在安装...