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中增加如下的依赖:
-
<dependencies>
-
<dependency>
-
<groupId>org.mockito</groupId>
-
<artifactId>mockito-all</artifactId>
-
<version>1.8
.
5
</version>
-
<scope>test</scope>
-
</dependency>
-
</dependencies>
<dependencies>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-all</artifactId>
<version>1.8.5</version>
<scope>test</scope>
</dependency>
</dependencies>
Mocktio包的引入
在程序中可以import org.mockito.Mockito;然后调用它的static方法,或者import static org.mockito.Mockito.*;个人倾向于后者,因为这样可以更方便些。
一个简单的例子
-
import
static
org.junit.Assert.*;
-
import
static
org.mockito.Mockito.*;
-
import
java.util.Iterator;
-
import
org.junit.Test;
-
-
-
-
-
-
public
class
SimpleTest {
-
-
@Test
-
public
void
simpleTest(){
-
-
Iterator i=mock(Iterator.class
);
-
when(i.next()).thenReturn("Hello"
).thenReturn(
"World"
);
-
-
String result=i.next()+" "
+i.next();
-
-
verify(i, times(2
)).next();
-
-
assertEquals("Hello World"
, result);
-
}
-
}
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.util.Iterator;
import org.junit.Test;
/**
*
* @author Brian Zhao
*/
public class SimpleTest {
@Test
public void simpleTest(){
//arrange
Iterator i=mock(Iterator.class);
when(i.next()).thenReturn("Hello").thenReturn("World");
//act
String result=i.next()+" "+i.next();
//verify
verify(i, times(2)).next();
//assert
assertEquals("Hello World", result);
}
}
在上面的例子中包含了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返回
值是否和预期一样。
分享到:
相关推荐
在标准的Mockito框架中,我们可以通过`Mockito.when()`方法来模拟对象的非静态方法,如`TestJava`类中的`getName()`、`getAge()`和`test()`方法。但在实际应用中,有时我们需要测试的代码会依赖于静态方法,例如`...
分别提供了Mockito库的API文档(javadoc)和源代码,对于学习和理解Mockito的内部工作原理非常有帮助。 总的来说,`mockito-1.9.5.zip` 包含了使用Mockito进行单元测试所需的一切,包括Mockito库本身、相关的文档...
本学习资料主要围绕使用JUnit 5进行单元测试,并结合Mockito库进行模拟对象的测试。 首先,让我们了解一下如何将JUnit 5添加到不同的项目构建工具中。在"Add JUnit 5 to Gradle project"中,你将学习到如何在Gradle...
通过阅读这份文档,开发者可以学习如何创建、配置和验证模拟对象,以及如何与JUnit结合使用,以构建高效的测试用例。文档通常会包含实例代码、方法解释和最佳实践建议,帮助开发者快速上手。 综上所述,这个压缩包...
通过深入学习《Mockito Cookbook》,开发者能够掌握如何利用Mockito提升单元测试的质量,减少因为依赖问题导致的测试复杂性,从而提高代码的可靠性和整体项目的质量。结合TDD实践,Mockito成为了一种强大的工具,...
#### 学习目标与背景 在软件开发过程中,单元测试作为确保代码质量的关键步骤之一,其重要性不言而喻。Mockito作为一种流行的单元测试框架,被广泛应用于Java项目的单元测试中。它通过模拟对象来帮助开发者隔离测试...
在学习Mockito的过程中,阅读官方文档和实践案例是至关重要的。通过不断地练习,你会掌握如何有效地使用Mockito来编写整洁、易于维护的单元测试。参考博文链接中的内容,可以找到更多关于Mockito的实际应用和示例。
- Mockito则提供更强大的功能,如验证、顺序验证等,适用于复杂的测试场景,但学习曲线可能稍陡峭。 在实际使用中,可以根据项目需求和团队偏好选择合适的框架。如果既有EasyMock的项目基础,可以考虑逐步迁移到...
1. 单元测试基础:理解什么是单元测试,以及它在软件开发中的重要性。 2. JUnit入门:学习如何设置JUnit项目,编写基本的测试用例,以及使用JUnit的各种特性。 3. Mockito基础:了解Mockito的基本概念,如何创建mock...
### Mockito Cookbook - 关键知识点概览 #### 一、Mockito框架简介 ...综上所述,《Mockito Cookbook》这本书涵盖了从基础到高级的所有Mockito使用技巧,非常适合希望深入学习Mockito并提高测试技能的开发者。
在IT行业中,集成测试是确保不同组件协同工作的重要环节,特别是在使用Spring MVC构建大型Web应用程序时。...通过学习和实践这些工具和技术,IT专业人士能够更好地应对复杂项目的挑战,提高开发效率和产品质量。
接下来,我们将通过一系列具体的例子来学习如何使用TestNG和Mockito进行实战单元测试。 ##### 第一步:项目结构和命名约定 在开始编写测试之前,需要先确定项目的结构和遵循一定的命名约定。通常情况下,测试类会...
Mockito 框架详解 Mockito 是一个流行的 Java 模拟测试框架,用于 isolating 依赖项并使测试更快速、更可靠。...通过学习 Mockito 的基本使用和常用方法,我们可以更好地 isolating 依赖项,并提高测试的效率。
### 相关知识点 #### 一、JUnit 4 基础与高级...通过以上知识点的学习,读者可以全面掌握如何使用 JUnit 4 和 Mockito 来构建高效、可靠的单元测试。这不仅有助于提高软件质量,还能加速开发周期,减少后期维护成本。
《使用Mockito与JUnit精通单元测试》是一本非常适合希望深入学习单元测试的开发者的书籍。通过本书的学习,开发者将能够掌握如何使用JUnit和Mockito这两个强大的工具来进行有效的单元测试,从而提高软件项目的整体...
在Java开发过程中,单元测试是确保代码...通过学习和熟练掌握Mockito的用法,我们可以编写出更加健壮的测试,提高代码的质量和稳定性。在实际工作中,不断实践和探索Mockito的各种特性,会使我们的测试工作事半功倍。
总的来说,"java UT mockito配套代码"很可能是为了展示如何在Java项目中有效利用Mockito进行单元测试,通过这些示例,开发者可以学习到如何创建模拟对象、配置行为、验证方法调用等Mockito的基本用法,从而提高测试...
springMVC 整合mockito单元测试学习-附件资源