先来一个简单的例子来感受一下

外部接口类:TestService.java

 1 package com.yzl.mock;
 2
 3 /**
 4  * 测试用服务
 5  *
 6  * @author yangzhilong
 7  */
 8 public interface TestService {
 9     /**
10      *
11      * 简单的测试服务,实现两个数相加
12      *
13      * @param a
14      * @param b
15      * @return
16      */
17     public int add(int a, int b);
18 }

正常流程的JUnit单元测试方法类似如下:

 1 @Test
 2 public void test0(){
 3     //从spring容器里取到该接口的实现类
 4     TestService service = new ClassPathXmlApplicationContext("xxx.xml").getBean(TestService.class);
 5     int a=2, b=3;
 6     int result = service.add(a, b);
 7     Assert.assertSame("计算结果预期", 5, result);
 8
 9     //拿到这个result然后调用其他的业务逻辑
10 }

但是目前该接口的实现类(服务)目前是调用不通的,或者是压根还没做,但是你又不想因为这个接口而影响自己的代码的测试,就可以使用Mockito来模拟接口的调用。

首先引入mockito的jar

1 <dependency>
2     <groupId>org.mockito</groupId>
3     <artifactId>mockito-core</artifactId>
4     <version>2.1.0-RC.1</version>
5     <scope>test</scope>
6 </dependency>

然后编写代码如下:

 1 package com.yzl.mock;
 2
 3 import org.junit.Assert;
 4 import org.junit.Test;
 5 import org.mockito.Mockito;
 6
 7 public class MockTest {
 8     /*
 9      * 使用mockito来模拟测试
10      */
11     @Test
12     public void test1(){
13         TestService service = Mockito.mock(TestService.class);
14         int a=2, b=3;
15         //使用mockito模拟接口返回
16         Mockito.when(service.add(a, b)).thenReturn(5);
17         int result = service.add(a, b);
18         System.out.println(a + "+" + b + "=" + result);
19         Assert.assertSame("计算结果预期", 5, service.add(a, b));
20         //使用result继续做后面的业务
21     }
22 }

上面的代码中Mockito的静态方法可以通过静态Import的形式导入,然后使用里面的静态方法就可以不带类名了,例如:

//非静态import的写法
import org.mockito.Mockito;
Mockito.when(service.add(a, b)).thenReturn(5);//静态import的写法
import static org.mockito.Mockito.*;
when(service.add(a, b)).thenReturn(5);

运行junit单元测试方法将输出:

2+3=5

单元测试mock之mockito使用相关推荐

  1. 单元测试Mock框架--Mockito

    文章目录 目前开发中,单元测试遇到的问题 解决方案--Mock Junit4 + Mockito: Mockito常用注解: Mockito常用方法: Tips: 总结 目前开发中,单元测试遇到的问题 ...

  2. android mock测试资源,Android 单元测试 --Mock 及 Mockito

    以前我在 Mock 概念 所谓的 Mock 就是创建一个类的虚假的对象,在测试环境中,用来替换掉真实的对象,主要提供两大功能: 验证这个对象的某些方法的调用情况,调用了多少次,参数是什么等等 指定这个 ...

  3. Android单元测试系列(3)-Mock之Mockito

    目录 一.官网 二.Demo示例 1. 目录结构 2. 被测试的类 3. 测试类 三.Mockito方法说明 1. mock对象创建 2. Mockito框架中的常见方法说明 2.1 常见的打桩方法 ...

  4. 史上最轻量​!阿里新型单元测试Mock工具开源了

    简介:为了探索更轻量易用的Mock测试手段,阿里云云效团队尝试给工具减负,在主流Mock工具的基础上让Mock的定义和置换干净利落,最终设计了一款极简风格的测试辅助工具TestableMock,无需初 ...

  5. Mock和Mockito简介

    本篇对Mock和Mockito做了简单的介绍,并列出了简单的示例. 使用Mockito需要基于JUnit,所以不了解JUnit的同学请先参考一下之前JUnit的文章. 什么是Mock? 在面向对象程序 ...

  6. Mock 及 Mockito 教程

    Mockito 教程 Mockito框架官方地址mockito,文档地址,中文版文档. Mockito库能够Mock对象.验证结果以及打桩(stubbing). 1. Mock和Mockito的关系 ...

  7. 单元测试 - mock异常

    单元测试 - mock异常 参考文章: (1)单元测试 - mock异常 (2)https://www.cnblogs.com/jylsgup/p/11154111.html (3)https://w ...

  8. 单元测试mock框架——jmockit实战

    JMockit是google code上面的一个java单元测试mock项目,她很方便地让你对单元测试中的final类,静态方法,构造方法进行mock,功能强大.项目地址在:http://jmocki ...

  9. Mock和Java单元测试中的Mock框架Mockito介绍

    什么是Mock? 在面向对象程序设计中,模拟对象(英语:mock object,也译作模仿对象)是以可控的方式模拟真实对象行为的假的对象.程序员通常创造模拟对象(mock object)来测试其他对象 ...

最新文章

  1. JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)
  2. 数据库高可用性——SQL Server 2005数据库复制简单图解
  3. perl 远程 mysql_perl联接mysql
  4. java获取response数据_Java中实现Http请求并获取响应数据
  5. SP1026 FAVDICE - Favorite Dice 期望dp
  6. Oracle基础 游标
  7. 【Kafka】消息超过最大值限制max.request.size
  8. 更改TFS项目中的SharePoint网站端口
  9. 当前主流的单元测试工具
  10. 《Android框架揭秘》读书笔记--在Java中调用C库函数
  11. Nb iot php_NB-IoT是什么
  12. 实现60fps的网易云音乐首页
  13. html格式的字幕如何匹配电影,电影片尾字幕内容范本
  14. 李宏毅机器学习课程自测练习题
  15. 重来之大学版|卸负篇-同辈压力的影响,如何正确看待同辈压力?如何缓解压力?
  16. 腾讯云实时音视频带你玩转语音聊天室
  17. 黎明职业大学计算机教研室主任,黎明职业大学计算机系相关专业.doc
  18. Java解决角谷定理。输入一个自然数,若为偶数,则把它除以2,若为奇数,则把它乘以3加1。经过如此有限次运算后,总可以得到自然数值1。求经过多少次可得到自然数1。
  19. 产品工作流| 工作交接
  20. 2022最新拼多多anti_content加密算法

热门文章

  1. 浅析:seo工程师擅长的网站数据分析
  2. 再谈HTTP2性能提升之背后原理—HTTP2历史解剖
  3. 站在你身边的每个人都有可能改变世界,阿里云异构计算加速人工智能
  4. 【知识积累】BufferedImage类实现图片的切分
  5. 关于ngOptions的键值对
  6. Nutch URL过滤配置规则
  7. 自定义导航栏,实现缓存,更新缓存,提高效率
  8. 安全 - MySQL 出现严重的密码安全漏洞,许多系统存在风险
  9. python下载指定的版本包
  10. Java面试题详解三:比较器