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

外部接口类:TestService.java

 package com.yzl.mock;

 /**
* 测试用服务
*
* @author yangzhilong
*/
public interface TestService {
/**
*
* 简单的测试服务,实现两个数相加
*
* @param a
* @param b
* @return
*/
public int add(int a, int b);
}

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

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

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

首先引入mockito的jar

 <dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>2.1.0-RC.1</version>
<scope>test</scope>
</dependency>

然后编写代码如下:

 package com.yzl.mock;

 import org.junit.Assert;
import org.junit.Test;
import org.mockito.Mockito; public class MockTest {
/*
* 使用mockito来模拟测试
*/
@Test
public void test1(){
TestService service = Mockito.mock(TestService.class);
int a=2, b=3;
//使用mockito模拟接口返回
Mockito.when(service.add(a, b)).thenReturn(5);
int result = service.add(a, b);
System.out.println(a + "+" + b + "=" + result);
Assert.assertSame("计算结果预期", 5, service.add(a, b));
//使用result继续做后面的业务
}
}

上面的代码中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框架优化之路(下)

    转载:https://sq.163yun.com/blog/article/169563599967031296 四.循环依赖的解决 果然! 当我将@SpyBean应用到存在有循环依赖的Bean上时, ...

  2. 教育单元测试mock框架优化之路(上)

    转载:https://sq.163yun.com/blog/article/169561874192850944 众所周知,mock对于单元测试,尤其是基于spring容器的单元测试,是非常重要的.它 ...

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

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

  4. 基于spring与mockito单元测试Mock对象注入

    转载:http://www.blogjava.net/qileilove/archive/2014/03/07/410713.html 1.关键词 单元测试.spring.mockito 2.概述 单 ...

  5. Mock以及Mockito的使用

    mockito http://www.vogella.com/tutorials/Mockito/article.html 原文地址: http://www.open-open.com/lib/vie ...

  6. Java单元测试神器之Mockito

    什么是 Mock 测试 Mock测试就是在测试过程中,对于某些不容易构造或者不容易获取的对象,用一个虚拟的对象来创建以便测试的测试方法.什么是不容易构造的对象呢?例如HttpServletReques ...

  7. Mock及Mockito使用

    mockito http://www.vogella.com/tutorials/Mockito/article.html 原文地址: http://www.open-open.com/lib/vie ...

  8. 教育单元测试mock框架优化之路(中)

    转载:https://sq.163yun.com/blog/article/169564470918451200 三.间接依赖的bean的mock替换 对于前面提供的@Mock,@Spy+@Injec ...

  9. [转] Mock以及Mockito的使用

    http://www.open-open.com/lib/view/open1462177583813.html [From] http://www.open-open.com/lib/view/op ...

随机推荐

  1. iOS 图片压缩

    + (UIImage *)scaleFromImage:(UIImage *)image {    CGSize newSize = CGSizeMake(366, 366);   //目标图片的大小 ...

  2. C++内存分配方式详解——堆、栈、自由存储区、全局/静态存储区和常量存储区

    栈,就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区.里面的变量通常是局部变量.函数参数等.在一个进程中,位于用户虚拟地址空间顶部的是用户栈,编译器用它来实现函数的调用.和堆一样 ...

  3. oracle 锁表查询及解决、表字段查询

    在进行批量对DML操作时程序竟然中断了,不再往下执行.查询一下某张表被锁住了,因此不再往下执行了 如果怀疑表被锁了,或者事务未被正常关闭,在Oracle数据库中我们可以通过以下语句进行查询获取相关信息 ...

  4. Eclipse 创建Maven项目的问题:a pom xml file already exists in the destination folder

    创建过一个Maven项目,删除的时候只在Eclipse中删除了,但是磁盘上的这个项目没有删除,所以报错 方法:重新创建一个不同名称的Maven项目,右键项目,选择Properties,看你的项目目录( ...

  5. 实现SQL Server中的切割字符串SplitString函数,返回Table

    有时我们要用到批量操作时都会对字符串进行拆分,可是SQL Server中却没有自带Split函数,所以要自己来实现了. -- ===================================== ...

  6. Windows Phone下的Socket编程

    讨论下有关于Windows Phone下的Socket编程方面的知识. Socket就是通常所称的套接字,用于描述IP地址和端口,是一个通信链的句柄.应用程序通常通过Socket向网络发出请求或者应答 ...

  7. 【shell脚本】显示文件的偶数或奇数行

    # Dispaly the odd line. awk 'NR%2==1' file

  8. 点击div外面该div消失(二)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  9. Ubuntu SVN客户端安装

    查看系统版本: uname -a (Linux查看版本当前操作系统内核信息) cat /proc/version (Linux查看当前操作系统版本信息) 1.首先需要安装Ubuntu SVN.Ubun ...

  10. atitit.元编程总结 o99

    atitit.元编程总结 o99.doc 1. 元编程(Metaprogramming) 1 2. 元编程的历史and发展 1 3. 元类型and元数据 1 4. 元编程实现方式 2 4.1. 代码生 ...