文章目录

  • 1、什么是Mock?
  • 1.1、 Mockito中文文档
  • 1.2、Mockito基本使用方法简介
    • 初始化MockMvc对象(BaseUnitTest)
    • 初始化Mock框架
    • 测试方法
  • 2.0 mock实践
    • 测试类继承 BaseUnitTest
    • 注入测试类及mock远程调用
    • 添加mock注解初始化
    • 测试方法
      • 类型一 :map
      • 类型二 :DTO对象
      • 类型三:返回map集合
      • 类型四:信息加解密
      • 类型五:缓存get/put

1、什么是Mock?

mock是在测试过程中,对于一些不容易构造/获取的对象,创建一个mock对象来模拟对象的行为。Mock就是可以给你制造任何你想要的对象,分层测试,你可以只测试controller或者service,而不需要牵扯到下层的调用,这样的话,测试就变得容易了。假设你的接口,有500种不同的返回结果,你要制造这500种返回结果来提高覆盖率
当你进行controller层的测试的时候,需要Mock掉service层

@Mock
private RouteServiceImpl routeService;

然后,你可以返回自己设置的、想要的、任意的内容,list是我期望返回的内容when(routeService.selectByRouteId(any())).thenReturn(list);

Mock有很多的实现框架,例如Mockito、EasyMock、Jmockit、PowerMock、Spock等等,SpringBoot默认的Mock框架是Mockito,和junit一样,只需要依赖spring-boot-starter-test就可以了。本文代码基于jdk8、junit4、Mockito3

1.1、 Mockito中文文档

Mockito是mocking框架,它让你用简洁的API做测试。而且Mockito简单易学,它可读性强和验证语法简洁。Mockito是GitHub上使用最广泛的Mock框架,并与JUnit结合使用.Mockito框架可以创建和配置mock对象.使用Mockito简化了具有外部依赖的类的测试开发!

中文文档

1.2、Mockito基本使用方法简介

对于前后端分离的项目而言,无法直接从前端静态代码中测试接口的正确性,因此可以通过MockMVC来模拟HTTP请求。基于RESTful风格的SpringMVC的测试,我们可以测试完整的Spring MVC流程,即从URL请求到控制器处理,再到视图渲染都可以测试。

初始化MockMvc对象(BaseUnitTest)

1)导包

  • xxTest 继承 BaseUnitTest

2)测试(只测试public的方法

//对目标测试类加@InjectMocks注解
@InjectMocks:创建一个实例,其余用@Mock(或@Spy)注解创建的mock将被注入到用该实例中。
//对目标测试类的依赖属性使用@mock创建依赖


公共变量

static String Key = “xxx”;

初始化Mock框架


公共开关抽取

Mockito.when(cacheFatctoryUtil.getJWIString(CacheConsts.JVM.TEST_KEY)).thenReturn(key);

测试方法

@Test
public void test方法名() throws Exception {//给方法参数赋值
String name = "aa";
//模拟支持视频的类型
Mockito.doReturn(",mp4,").when(cacheFactoryUtil).getJVMString(CacheConsts.JVM.VIDEO_TYPES);//模拟视频截图出参
Response response = Mockito.mock(Response.class);
Result result = Mockito.mock(Result.class);
Result.Bean resultBean = new Result.Bean();//Result.Bean<String> resultBean = new Result.Bean<>();
resultBean.put("name","1");
resultBean.put("age","18");
Mockito.doReturn(response).when(远程调用服务).方法(Mockito.anyString(),Mockito.ang(Map.clas));//Mockito.doReturn(JSON.toJSONString(result)).when(result).toJSONString();
Mockito.doReturn(result).when(response).getResult();
Mockito.doReturn("0000" ).when(result).getReturnCode();
Mockito.doReturn("success").when(result).getReturnMessage();
Mockito.doReturn(resultBean).when(result).getBean();
//
//测试类中调用的别的方法 和需要赋值的参数
//
//进入需要测试的类的测试方法
xxxServer.方法名(方法参数);
}

2.0 mock实践

测试类继承 BaseUnitTest

(测试时可先注释,提高启动项目速度)

注入测试类及mock远程调用

@Autowired
@InjectMocks
private Xxxserver xxserver;@Mock
private XxxSV xxxSV;

添加mock注解初始化

测试方法

类型一 :map

类型二 :DTO对象

只需setDTO对象

类型三:返回map集合


测试时只需 new 一个Map集合,put需要的值 返回这个Map集合即可

类型四:信息加解密

加密信息

des.decrypt();解密

类型五:缓存get/put

put2Cache(Boolean )

Mockito.doReturn(true).when(cacheServiceHanager).put2Cache(Mockito.anyString()```[添加链接描述](https://mp.weixin.qq.com/s/rQRO2SaqhQImQlnA5NsEQw)
#### 类型六:List<DO>
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200930143920171.png#pic_center)## Mockito 一个优秀的 Mock 测试框架[Mockito 一个优秀的 Mock 测试框架](https://mp.weixin.qq.com/s/rQRO2SaqhQImQlnA5NsEQw)

Mock(Mockito)单元测试实战相关推荐

  1. mockito 单元测试_使用FizzBu​​zz和Mockito进行单元测试

    mockito 单元测试 我有时使用FizzBu​​zz向新手演示单元测试的基础. 尽管FizzBu​​zz确实是一个简单的问题,但它也可以用于演示更高级的单元测试技术,例如模拟 . FizzBu​​ ...

  2. mockito单元测试示例_Mockito模拟示例

    mockito单元测试示例 Mockito mocking framework provides different ways to mock a class. Let's look at diffe ...

  3. linux打桩数框架,Mockito 单元测试打桩神器

    last modified by coder4 , 2019/08/30 18:34:26 Mockito 单元测试打桩神器 单元测试 软件测试是软件质量保证的关健环节,代表了需求.设计和编码的最终检 ...

  4. 记录学习Mockito单元测试的坑——空指针异常

    记录学习Mockito单元测试的坑--空指针异常 情况一 mockito-all依赖和mockito-core依赖同时引用时,可能会报空指针异常 正确引用 <!--导入junit单元测试依赖-- ...

  5. 带你读懂mock测试——单元测试实践篇

    1.什么是mock测试? Mock 测试就是在测试过程中,对于某些不容易构造或者不容易获取的比较复杂的对象,用一个虚拟的对象(Mock 对象)来创建以便测试的测试方法. 2.为什么要进行Mock测试? ...

  6. Springboot单元测试mysql_Springboot Mybatis-Plus数据库单元测试实战(三种方式)

    单元测试长久以来是热门话题,本文不会讨论需不需要写单测,可以看看参考资料1,我个人认为写好单测应该是每个优秀开发者必备的技能,关于写单测的好处在这里我就不展开讨论了,快速进入本文着重讨论的话题,如何写 ...

  7. 【全面解析Mock】Mock在单元测试中扮演一个什么角色?

    目录 一.Mock在单元测试中扮演一个什么角色 二.测试准备 三.使用Mock的理由 四.使用Python Mock 五.MagicMock类 六.mock.create_autospce 七.moc ...

  8. TestNG单元测试实战

    TestNG单元测试实战 单元测试是什么 对软件中最小可测试单元进行验证.小到一个方法,大到一个类.一个模块.都可以用单元测试覆盖. 单元测试有必要写吗 现状: 面对日复一日排满的需求,没有时间去写. ...

  9. mockito mock void方法_一文让你快速上手 Mockito 单元测试框架(上)

    作者|mghio 编辑|包包 前言  在计算机编程中,单元测试是一种软件测试方法,通过该方法可以测试源代码的各个单元功能是否适合使用.为代码编写单元测试有很多好处,包括可以及早的发现代码错误,促进更改 ...

最新文章

  1. 全球首次!中国黑客通过安全漏洞远程攻破特斯拉,可在行驶中“帮”你刹车...
  2. 2020年数学与计算机科学奖获得者,2020 数学与计算机科学奖 获奖人 —— 彭实戈 - 未来科学大奖...
  3. python提示错误TypeError: write() argument must be str, not bytes
  4. Netty实战 IM即时通讯系统(六)实战: 客户端和服务端双向通信
  5. Can't connect to MySQL server on 'localhost' (1...
  6. 洛谷 1297 [国家集训队]单选错位——期望
  7. Bzoj4199:[NOI2015]品酒大会
  8. [转载] python笔记
  9. linux dd来加载驱动,linux 加载raid驱动
  10. mysql数据库p_PbootCMS Sqlite数据库转Mysql数据库教程
  11. 【SVL官方说明文档】
  12. 原生js写网页下拉菜单
  13. 上海浦东机场的wifi使用攻略
  14. DeprecationWarning: Seeding based on hashing is deprecated since Python 3.9
  15. 企立方-拼多多采集注意的点有哪些
  16. php获取蓝凑云文件列表,蓝奏云网盘登录获取文件例程
  17. AutoLayout进阶篇
  18. ppt模板有哪些网站
  19. 对网页游戏《卧龙吟》的分析3-----预登陆flash的源代码分析
  20. UBLOX F9P搭建NtripCaster组建RTK

热门文章

  1. 【文件共享】nfs和samba都有什么区别
  2. IOC(概念和原理)
  3. cookie,sessionStorage 和 localStorage 的区别 cookie弊端
  4. impala 执行计划详解
  5. 《WEB前端框架开发技术》HTML5响应式旅游景区网站设计与实现——榆林子州HTML+CSS+JavaScript
  6. Web前端入门 HTML
  7. 美团琴鸟 Lyrebird 工具 (接口 mock 类)
  8. 使用阿里巴巴提供的约束规范
  9. Java安装系列之mysql+sqlyong安装
  10. c语言查询学号(字符串),如何用C语言编写自己的姓名和学号