Mockito是现在java领域中,用java语言编写的测试代码保持最简洁的一个mock框架(不与groovy等比较)。相比easymock,jmock,编写出来的代码更加容易阅读。无需录制mock方法调用就返回默认值是很大一个优势。
以下为实际的精简测试用例使用,相比较其它mock框架,更加容易阅读。更加符合DSL。
/**
* Mockito测试使用实例
*
* @author badqiu
* @email badqiu(a)gmail.com
*
*/
public class MockitoListTest extends Assert{
List<String> mockList = mock(List.class);
@Test //标准测试
public void test_3A() {
//arrange
when(mockList.get(0)).thenReturn("one");
when(mockList.get(1)).thenReturn("two");
//action
String result1 = mockList.get(0);
//assert
assertEquals(result1,"one");
verify(mockList).get(0);
}
@Test //返回默认值,无需录制动作
public void test_default_value_return_by_mockito() {
//action
String result1 = mockList.get(0);
//assert
assertEquals(result1,null);
verify(mockList).get(0);
}
@Test //参数的精确匹配及模糊匹配any()
public void test_arguments_matche() {
// 参数匹配,使用的eq()等参数匹配,则必须全部使用匹配符,不使用则不用
// eq() any() anyInt() anyObject() anyMap() anyCollection()
when(mockList.get(anyInt())).thenReturn("return me by anyInt()");
for(int i = 0; i < 100; i++) {
assertEquals("return me by anyInt()",mockList.get(i));
}
}
@Test //调用次数不同,返回值也不同
public void test_return_different_values_by_call_times() {
when(mockList.get(0)).thenReturn("1").thenReturn("2");
assertEquals(mockList.get(0),"1");
assertEquals(mockList.get(0),"2");
}
@Test //验证方法调用次数
public void verify_how_many_times_a_method_is_called() {
mockList.get(0);
mockList.get(2);
mockList.get(2);
mockList.get(2);
//方法调用次数验证
verify(mockList,atLeastOnce()).get(0);
verify(mockList,never()).get(1);
verify(mockList,times(3)).get(2);
}
// 没有返回值的方法 exception 抛出
@Test(expected=IllegalStateException.class)
public void test_throw_exception_with_not_return_value_method() {
doThrow(new IllegalStateException("please not invocke clear() ")).when(mockList).clear();
mockList.clear();
}
// 有返回值的方法 exception 抛出
@Test(expected=IllegalStateException.class)
public void test_throw_exception_with_has_return_value_method() {
when(mockList.remove(1)).thenThrow(new IllegalStateException("I has return value"));
mockList.remove(1);
}
}
分享到:
相关推荐
SOAP Web服务模拟实用程序,使用Web服务器实例在本地端口上创建真实的服务端点。 这些端点将请求直接委托给模拟。 用户将从中受益 全栈客户端测试 拦截器 处理程序 简单的JUnit规则设置 SOAP故障帮手 所有这些都...
mickito实例:在实际项目中写单元测试的过程中我们会发现需要测试的类有很多依赖,这些依赖项又会有依赖,导致在单元测试代码里几乎无法完成构建,尤其是当依赖项尚未构建完成时会导致单元测试无法进行。为了解决这...
先来看看下面这个示例:从上图可以看出如果我们要对A进行测试,那么就要先把整个依赖树构建出来,也就是BCDE的实例。 一种替代方案就是使用mocks从图中可以清晰的看出mock对象就是在调试期间用来作为真实对象的替代...
3.mockito的使用实例 版本库地址 HTTPS协议: https://github.com/ichunming/junit.git SSH协议: git@github.com:ichunming/junit.git 克隆版本库 操作示例:`$ git clone git@github.com:ichunming/junit.git` PS:...
#README ##这是一个关于使用Mock来进行单元测试构建的实例 原文的地址: 翻译后:
使用模仿对象进行测试,创建模仿对象的实例,构建时要将要模拟的接口或类的类型传递给 Mock 对象作为构建参数
Android单元测试(四):Mock以及Mockito的使用 代码和测试代码在mockito子package下面 Android单元测试(五):依赖注入,将mock方便的用起来 代码和测试代码在di子package下面 Android单元测试(六):使用dagger2...
Arquillian、石墨烯、无人机和 Warp ... 在门面内部存在一个 Mockito 实例,它可以完全由您的分配控制。测试环境JBoss 7.1.1; 也应该在主要/次要版本中工作。 火狐Java 1.7; 由于 Arquillian 对 JRE 方法 getLoopb
本文介绍和对比了TestNG和junit框架,并举出实例说明。 同时讲解了Mockito和Dbunit框架的使用
16.3 模拟利器Mockito 16.3.1 模拟测试概述 16.3.2 创建Mock对象 16.3.3 设定Mock对象的期望行为及返回值 16.3.4 验证交互行为 16.4 测试整合之王Unitils 16.4.1 Unitils概述 16.4.2 集成Spring 16.4.3 集成...
16.3 模拟利器Mockito 16.3.1 模拟测试概述 16.3.2 创建Mock对象 16.3.3 设定Mock对象的期望行为及返回值 16.3.4 验证交互行为 16.4 测试整合之王Unitils 16.4.1 Unitils概述 16.4.2 集成Spring 16.4.3 集成...
记录器和模式 :使用记录 :使用异常的示例固定装置:TODO 建造者:TODO测试框架 :使用Assertj的示例(测试框架) :使用Mockito的示例(测试框架) :使用OpenPojo的示例(测试框架)春天 :使用spring core的示例...
第16章:有别于一般书籍的单元测试内容,本书以当前最具实战的JUnit4+Unitils+ Mockito复合测试框架对如何测试数据库、Web的应用进行了深入的讲解。 第17章:以一个实际的项目为蓝本,带领读者从项目需求分析、...
它提供了一种简单的方法来为GWT客户端代码编写快速的Java测试,而无需GWTTestCase或任何servlet容器实例! 这意味着您可以不受限制地使用任何Java工具:JUnit,反射,Easymock,Mockito等。 编写测试如下所示: @...
-该项目使用类的以使测试可以访问实例变量和方法。 -使用可用的不同 。 -模拟Trie服务,以便单独测试我们的示例问题的解决方案。 -测试Trie API。如何使用API- 使用API的理想方法是使用依赖注入(例如使用...
Primer允许您使用以下两种方式之一创建主要实例,mockito的用户会熟悉这两种方式: @Primable(contextPath = "/account", port = 9011) private Primer accountService; @Primable(contextPath = "/exchangerate...
第16章:有别于一般书籍的单元测试内容,本书以当前最具实战的JUnit4+Unitils+ Mockito复合测试框架对如何测试数据库、Web的应用进行了深入的讲解。 第17章:以一个实际的项目为蓝本,带领读者从项目需求分析、...
Mockito、JUnit、Retrofit、RxJava 和 Dagger 2 测试服务器调用。 这个应用程序包括: 库和工具包括: 支持库 回收者视图 和 也可以访问我的博客: 要求 - Android Studio - Gradle 安装 - Install Android Studio: ...
Java实例 一个闲暇时间学习Java的Maven项目。 大多数说明都以Javadoc的形式直接写在代码中。 我使用测试来了解不同框架中的技术细节。 您可以使用以下命令运行这些测试: mvn clean install该项目已在Java 11和Java ...