基于java的Mock利器-Mockito

2023-11-07

1.认识Mockito

  • Mockito是java单元测试中使用率最高的Mock框架之一。
  • 特点:简明的语法和完整的文档,Mockito支持永Maven和Gradle来进行依赖引入和管理。

2.Mockito Maven引入:

<dependency>
            <groupId>org.mockito</groupId>
            <artifactId>mockito-core</artifactId>
            <version>3.8.0</version>
            <scope>test</scope>
</dependency

3.认识Mockito

Mockito可以验证某些行为:一旦mock对象被创建了,mock对象会记住所有的交互。
在这里插入图片描述

4.Mockito可以做一些测试桩(Stub)

默认情况下,所以的函数都有返回值。mock函数默认返回值是Null,一个空的集合或者一个被对象类型包装的内置类型,例如0,false对应的对象类型为Integer,boolean,测试桩函数可以被覆写,例如常见的测试桩可以用于初始化夹具,但是测试函数能够覆写它,一旦测试桩被调用,该函数将会一致返回。
在这里插入图片描述

5.Mockito以自然的JAVA风格来验证参数

为了合理的使用复杂的参数匹配,使用equals()与anyX()的匹配器会使得测试代码更简洁,简单。
在这里插入图片描述

6.Mockito可以验证执行的顺序

验证执行顺序是非常灵活的,不需要一个一个的验证所有交互,只需要验证感兴趣的对象即可。另外,可以仅通过哪些需要验证顺序的mock对象来创建InOrder对象。
在这里插入图片描述

7.Mockito可以为连续的调用做测试桩

  • 有时我们需要为同一个函数调用的不同的返回值或异常做测试桩
  • 事例
    在这里插入图片描述

8.Mocktio可以监控真实对象

可以为真实对象创建一个监控(spy)对象。当你使用这个spy对象也会调用,除非它的函数被stub了,尽量少使用spy对象,使用时也需要小心形式,例如spy对象可以用来处理遗留代码,监控一个真实的对象跟mock对象概念结合起来。
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于java的Mock利器-Mockito 的相关文章

  • 如何在 JdbcTemplate 中创建 mySQL 存储过程

    背景 为了解决 MySql 中某些语句只允许在存储过程中出现的问题 我尝试在 JdbcTemplate 提交的 sql 中创建 运行然后删除存储过程 一个简单的例子是 这恰好是在 Spring Boot 中 Service public c
  • 使用 3d 对象作为 3d 散点图中的标记 - Python

    使用下面的代码 我尝试模拟一个用罐头制成的碗 我希望每个标记都是一个罐头 最好的方法是什么 我真的很感激任何建议 谢谢 import pylab import numpy as np from math import pi sin cos
  • 如何为 Python 中的应用程序设置专用屏幕区域?

    MS OneNote 就是一个很好的例子 它可以选择固定在屏幕的一侧 并将所有其他窗口推到一侧 当最大化或调整其他窗口大小时 它们只能扩展到 OneNote 的边缘 Python 使用 Tkinter 或其他模块是否具有此功能 感谢您的帮助
  • pandas to_sql sqlalchemy 与 secure_transport 的连接

    我正在尝试将数据发送到具有 require secure transport ON 的服务器上的 mysql 数据库 当我尝试使用以下代码连接到它时 import pandas as pd import pymysql from sqlal
  • 根据给定列表中的值替换列中的值[重复]

    这个问题在这里已经有答案了 我在数据框中有一列 仅允许定义列表中存在的值 例如 给定列表 l1 1 2 5 6 如果列表中不存在列中的值 我需要将每个值替换为 0 column Expected column 1 1 5 5 2 2 3 0
  • Python,多线程,获取网页,下载网页

    我想在一个站点批量下载网页 我的 urls txt 文件中有 5000000 个 url 链接 大约有300M 如何让多线程链接这些网址并下载这些网页 或者如何批量下载这些网页 我的想法 with open urls txt r as f
  • 使 np.loadtxt 使用多个可能的分隔符

    我有一个程序可以读取数据文件 用户可以选择他们想要使用的列 我希望它对于输入文件更加通用 有时 列可能如下所示 10 34 24 58 8 284 6 121 有时它们可 能看起来像这样 10 34 24 58 8 284 6 121 我希
  • java中日期转换dd-MMM-yyyy到dd-MM-yyyy

    在Java中将23 Mar 2011转换为23 03 2011的最简单方法是什么 感谢大家 这似乎解决了这个问题 try Calendar cal Calendar getInstance cal setTime new SimpleDat
  • Elasticsearch - EdgeNgram + 突出显示 + term_vector = 不好的突出显示

    当我使用带有edgengram min 3 max 7 front term vector with positions offsets的分析器时 文档包含文本 CouchDB 当我搜索 couc 时 我的亮点是 cpu 而不是 couc
  • Python:帮助(numpy)在退出时导致段错误

    我遇到了一个奇怪的现象 在 python 解释器中 我执行以下操作 gt gt gt import numpy gt gt gt help numpy 帮助显示正确 但一旦我按 q 返回解释器 Segmentation fault core
  • Java 验证日期为 yyyyMMddHHmmss

    我想在java中验证给定的日期格式为yyyyMMddHHmmss 状况 应符合格式 yyyyMMddHHmmss 它应该验证当前日期 它应该验证与当前小时有 3 小时或 3 小时差异的小时数 如果满足所有三个条件 Java 方法应返回 tr
  • 如何限制scrapy请求对象?

    所以我有一个蜘蛛 我认为它正在泄漏内存 结果当我检查 telnet 控制台 gt gt gt prefs 时 它只是从链接丰富的页面中抓取了太多链接 有时它会超过 100 000 个 现在我已经一遍又一遍地浏览文档和谷歌 但我找不到一种方法
  • 如何将 fields 参数传递到 Google Drive Python API 调用中

    I have results drive service files list body execute where body q query string maxResults 1 为了提高性能 我想限制返回的字段 如下所述 https
  • Scrapy 抓取并跟踪 href 中的链接

    我对 scrapy 很陌生 我需要从 url 的主页跟踪 href 到多个深度 再次在 href 链接内我有多个 href 我需要遵循这些href 直到到达我想要抓取的页面 我的页面的示例 html 是 初始页 div class page
  • Spring Transactional 减慢了整个过程

    我正在尝试分析我有两堂课的情况 其中一个类是 ProcessImpl 它是起点并在内部调用其他子事务 我不知道出了什么问题 processImpl正在导入一些东西并将相关数据写入数据库 Specs Spring orm版本 3 2 18 发
  • Struts2中的变量声明

    Struts2中如何声明变量并为该变量赋值 使用设置标签
  • Flask 扩展未在 app.extensions 中注册

    我想访问在我的 Flask 应用程序上注册的一些扩展 我尝试使用app extensions 但我初始化的一些扩展不在字典中 from flask import current app current app extensions get
  • AndroidAnnotations 和 Dagger

    我正在尝试使用 Dagger 注入 Android 带注释的 Activity java lang IllegalArgumentException No inject registered for members com app serv
  • 获取Java中ResultSet返回的行数

    我用过一个ResultSet返回一定数量的行 我的代码是这样的 ResultSet res getData if res next System out println No Data Found while res next code t
  • django admin 中内联模型的分页器

    我有这个简单的 django 模型 由一个传感器和特定传感器的值组成 每个日射强度计的值数量很多 gt 30k 是否可以以某种方式分页PyranometerValues在特定日期或一般情况下将分页器应用于管理内联视图 class Pyran

随机推荐

  • jquery 获取select选中option的索引以及根据索引过滤option

    jquery获取选中option的索引 select可以通过selectedIndex属性快速获取选中option索引 用法如下 select get 0 selectedIndex jquery跟据索引过滤select下的子元素optio
  • Tomcat管理页面配置与访问地址限制修改

    1 增加用户角色和用户 conf tomcat users xml 增加配置
  • UE基础使用

    一 打包 二 显示FPS 三 坐标系 四 第三人称模式 四 筛选物体 五 物体对其到地面 六 UE加载窗口默认布局 七 关闭磁力吸附 关闭后可以自由移动 八 属性变为默认值 九 快速聚焦到物体 按F键或者双击 十 按shift键拖拽坐标轴
  • 机械革命 键盘灯 linux,机械革命x6Ti安装ubuntu(100%成功)

    这个教程是本人亲自试验成功的 方案为ssd不变 ubuntu装在机械硬盘 步骤 1 在电脑的机械硬盘中压缩出一个大小为200G的空间 无论哪个盘 你按自己的需求压缩大小 2 在官网下载系统镜像 解压到U盘中 由于这款电脑的主板新 所以直接解
  • SpringBoot-Thymeleaf-MySQL-SpringMVC实现网页端的数据库信息的增删改查(JavaEE巨详细版)

    Hello 欢迎来到我的博客 既然选择了远方 便只顾风雨兼程 源码已上传资源 0积分获取 觉得有用的点个赞嘛 源码点击这里 上一篇 博客只实现了数据库信息的网页端展示 本篇博客我们来更详细的写一下学生信息管理系统的网页端跳转版增删改查 ht
  • 计算机网络 day8 动态路由 - NAT - SNAT实验 - VMware的网卡的3种模式

    目录 动态路由 IGP 和 EGP 参考网课 4 6 1 路由选择协议概述 哔哩哔哩 bilibili 编辑 IGP Interior Gateway Protocol 内部网关协议 EGP Interior Gateway Protoco
  • 子类实例化对象的全过程

    子类实例化对象的全过程 我们只造了一个对象dog 但是dog的构造器直接或间接的调用了直接父类或间接父类的构造器来加载他们的属性和方法 子类对象实例化全过程图示 从结果上来看 继承性 子类继承父类以后就获取了父类中声明的属性和方法 创建子类
  • 信息隐藏——DCT隐写

    DCT隐写 实验目的 了解DCT的系数隐写 实验内容 Jepg 压缩算法的回顾 用MATLAB实现图像DCT相关操作 完成基于图像DCT的信息隐藏实验 两点法的嵌入和提取 三点法的嵌入和提取 1 Jpeg压缩算法 一 色彩空间转换 RGB空
  • 学习日记--8.5--linux初装

    1 用xmms播放mp3 首先linux自带的xmms缺少一个插件 可以先下载并且安装 xmms mpg123 1 2 7 13 i386 rpm 但是如此之后可能还不可以使用 播放一秒就死住 这时候 在xmms 运行后之上点击 右键 gt
  • FreeAnchor:令anchor自由匹配标签的策略

    前言 本文将要介绍一种为训练样本分配标签的策略 这种策略称作 FreeAnchor 注意不是 anchor free 哦 FreeAnchor 是用于 anchor based 体系下的策略 那么它到底free在哪里呢 anchor还能玩起
  • TOP命令参数详解

    TOP命令详解 一 top命令介绍 相信每个运维人员都遇到过的事情就是服务器的负载突然飙升 碰到这种情况 大家第一反应一定是登到服务器上 先敲一个top命令看看load average吧 在Linux操作系统中 top是使用最频繁 也是信息
  • vue改变数组的值,样式控制没变化

    目录 问题背景 解决方案 第一种 使用this set target index value 第二种 this forceUpdate 参考 问题背景 我用0 1 控制隐藏还是显示 因为有多个所以用的数组 如下代码 省略 data retu
  • MATLAB怎么使用table格式读取csv文件并画图

    MATLAB中新增了一个table类型 可以很方便的读取文件中的数据 在使用这个格式的时候会默认把读取文件的第一行设置为标题 访问的时候需要通过索引值进行访问 具体怎么操作通过一个MATLAB例子进行说明 MATLAB代码 T readta
  • c 语言怎么释放链表节点,C:如何释放链表中的节点?

    我如何释放在另一个函数中分配的节点 struct node int data struct node next struct node buildList struct node head NULL struct node second N
  • 揭开数学智慧的神秘面纱:MathGPTPro使用指南带你领略数学的魅力!

    请查收一份MathGPTPro的使用指南 欢迎大家进入我们的MathGPTPro群 我们产品的链接在这 https mathgptpro com 欢迎大家踊跃提问 大家可以文字或者图片 也支持手写图片 输入问题 遇到回答中不解的问题 公式
  • MYSQL学习笔记(二)——数据库和数据表操作

    MYSQL数据库学习笔记 二 目录 MYSQL数据库学习笔记 二 一 MYSQL数据库操作 一 创建数据库 二 指定当前数据库 三 修改数据库 四 删除数据库 二 数据表操作 一 创建数据表 二 复制现成的表 三 修改数据表 1 add实例
  • 关于电脑丢失msvcr120.dll的几个修复方法

    MSVCR120 dll它是Windows系统运行某些程序所需的文件之一 如果你在运行某个程序时遇到了MSVCR120 dll丢失的错误 那么你不能简单地忽略它 因为这可能会导致程序无法正常运行 在本篇文章中 我们将为大家介绍一些解决MSV
  • MySQL高效编程学习笔记(五)--表的维护和改造

    修改表的列结构 若表中有数据最好先备份 注意转换前后的字符长度 以及是否可以互相转换等问题 改变列数据类型 ALTER TABLE visitor MODIFY nam VARCHAR 30 Eg alter table goods mod
  • 用Node.js实现一个HTTP服务器程序(文件服务器)

    http Node js开发的目的就是为了用JavaScript编写Web服务器程序 因为JavaScript实际上已经统治了浏览器端的脚本 其优势就是有世界上数量最多的前端开发人员 如果已经掌握了JavaScript前端开发 再学习一下如
  • 基于java的Mock利器-Mockito

    1 认识Mockito Mockito是java单元测试中使用率最高的Mock框架之一 特点 简明的语法和完整的文档 Mockito支持永Maven和Gradle来进行依赖引入和管理 2 Mockito Maven引入