位置: IT常识 - 正文

Mockito使用方法(Kotlin)(mockito mock方法)

编辑:rootadmin
一、为什么要使用Mockito 1.实际案例 1.1 遇到的问题 对于经常维护的项目,经常遇到一个实际问题:需求不停改变,导致架构经常需要修改某些概念的定义。 对于某些十分基础又十分常用的概念,常常牵一发而动全身。 此时,"重构-测试"循环将会消耗比较多的费用。 1.2 解决方法1 可以通过领域驱动 ... 一、为什么要使用Mockito1.实际案例1.1 遇到的问题

推荐整理分享Mockito使用方法(Kotlin)(mockito mock方法),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:mockito mock方法,mock使用教程,mockito-all,mock的使用,mockito powermock,mockito-all,mock使用教程,mock使用教程,内容如对您有帮助,希望把文章链接给更多的朋友!

对于经常维护的项目,经常遇到一个实际问题:需求不停改变,导致架构经常需要修改某些概念的定义。

对于某些十分基础又十分常用的概念,常常牵一发而动全身。

此时,"重构-测试"循环将会消耗比较多的费用。

1.2 解决方法1

可以通过领域驱动开发,在设计架构之前和相关领域的专家充分沟通,从而从一开始就得到准确的定义。

同时,在开发过程中对于之后有可能增加新功能的模块,充分增加其可拓展性。

1.2 解决方法2

通过编写高质量代码,保证单一功能由单一函数负责,从而减少增加新功能时的工作量。

1.3 根本原因

不论架构怎样设计,对于一个经常维护、更新的项目,其必然会在某些时刻遇到修改基本定义的情况。

而这些基本定义的大量引用,对于一名普通开发者来说,不一定能完全照顾到。

即使照顾到了,也不能保证下一次也同样不出问题。

1.4 解决方法3

使用自动化测试,在增加代码后用计算机代替人进行功能测试,从而大大提高测试效率。

在引入单元测试后,不仅能测试出“是否有问题”,更能高效找到错误出现的位置,效率显著高于传统的控制台输出调试方法。

2.行为驱动开发2.1 概览

BDD:行为驱动开发

第一步:编写一个失败的"客户验收测试",从客户视角描述系统。

第二步:写系统代码,直到验收测试通过。

2.2 缺点

代码量大,前期成本高。

Mockito使用方法(Kotlin)(mockito mock方法)

即该方法不适合一次性写完,之后几乎不维护的小型程序。

2.3 优点

后期开发效率大大提高。

因此,该方法适用于时常维护,使用时间很长的大型程序。

二、部署Mockito1.gradle部署

build.gradle.kts

dependencies {testImplementation("org.mockito:mockito-core:4.3.1")testImplementation("org.junit.jupiter:junit-jupiter-api:5.8.2")testImplementation("org.mockito:mockito-inline:4.3.1")testImplementation(fileTree("testLibs"))testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:5.8.2")}

注意:testLibs可以改成任意文件夹名,这个文件夹放入你的外部依赖(如spigot的jar)

2.在哪里写测试代码

import org.junit.jupiter.api.Test;public class TestStarter {@Testpublic void test(){TestCore.INSTANCE.test();}}3.ClassFormatError

这是因为你看起来导入了API,实际上没有导入好。

解决方法:把API(如Spigot)的jar文件放入testLibs(或你自己的文件夹名)

SpigotAPI下载地址:https://hub.spigotmc.org/nexus/content/repositories/snapshots/org/spigotmc/spigot-api/

4.ClassNotFoundError

这是因为你没有导入API。

解决方法:testImplementation("你需要的依赖"),示例如下

testImplementation("io.izzel.taboolib:common:6.0.10-11")testImplementation("io.izzel.taboolib:module-configuration:6.0.10-11")三、使用方法1.mock

用来创建一个虚假的对象,如Player。

val player= Mockito.mock(Player::class.java)

这个对象的类型就是Player,可以传递给别的方法,并且可以自定义触发player的方法时,执行和返回的内容。

2.when ... then ...2.1 when ...thenReturn ...val player=mock(Player::class.java)`when`(player.name).thenReturn(playerName)val playerLocation= mock(Location::class.java)`when`(playerLocation.x).thenReturn(0.0)`when`(playerLocation.y).thenReturn(0.0)`when`(playerLocation.z).thenReturn(0.0)

这个方法可以用来指定返回值。

2.2 anyString()

对于有参数的方法,可以设定不论传入什么参数,都return特定值。

anyInt()等同理。

val map= Mockito.mock(ConfigFile::class.java)Mockito.`when`(map.getString(anyString())).thenReturn("Test")2.3.thenAnswer

有时候,我们设置了anyString()之后,想使用实际传入的参数,就需要thenAnswer()。

arguments即为传入的实际参数。

Mockito.`when`(map.getString(anyString())).thenAnswer { invocation ->val args = invocation.argumentsvar str = args[0] as StringfakeMap.getString(str)}

2.4 @BeforeAll

2.5MockedStatic

本文链接地址:https://www.jiuchutong.com/zhishi/311562.html 转载请保留说明!

上一篇:python中的函数(1)(python中的函数库)

下一篇:dedecms织梦显示副栏目文章的方法(织梦前台数据不能存入中文)

  • 惠普是哪个国家的品牌(惠普打印机是哪个国家的品牌)

    惠普是哪个国家的品牌(惠普打印机是哪个国家的品牌)

  • 探探发消息别人收不到(探探给人发消息别人看不到)

    探探发消息别人收不到(探探给人发消息别人看不到)

  • 苹果xr微信通知声音怎么改

    苹果xr微信通知声音怎么改

  • 拼多多为什么不显示猫(拼多多为什么不能用微信支付)

    拼多多为什么不显示猫(拼多多为什么不能用微信支付)

  • 公众号里的音频如何下载在到电脑上(怎么转载别人公众号里的音频)

    公众号里的音频如何下载在到电脑上(怎么转载别人公众号里的音频)

  • 磁盘0是什么(磁盘是什么样子)

    磁盘0是什么(磁盘是什么样子)

  • qq清除缓存数据会怎样(qq清除缓存数据会删掉图片吗)

    qq清除缓存数据会怎样(qq清除缓存数据会删掉图片吗)

  • 怎么把一张表格打印双面(怎么把一张表格内容复制到另外一个)

    怎么把一张表格打印双面(怎么把一张表格内容复制到另外一个)

  • 200兆宽带用450兆路由器行吗(200兆宽带用450兆路由器网速怎么样)

    200兆宽带用450兆路由器行吗(200兆宽带用450兆路由器网速怎么样)

  • 钉钉群未认证是什么意思(钉钉群显示未认证)

    钉钉群未认证是什么意思(钉钉群显示未认证)

  • 华为mate30pro是什么材质(mate30pro主打什么)

    华为mate30pro是什么材质(mate30pro主打什么)

  • 手机上hd开启了有害吗(手机上hd开启了会怎么样)

    手机上hd开启了有害吗(手机上hd开启了会怎么样)

  • 荣耀9x收不到短信验证码(荣耀9x收不到短信是什么情况)

    荣耀9x收不到短信验证码(荣耀9x收不到短信是什么情况)

  • word里面怎么画线段(word里面怎么画虚线线条)

    word里面怎么画线段(word里面怎么画虚线线条)

  • 华为potal00是什么型号(potal00华为手机什么型号)

    华为potal00是什么型号(potal00华为手机什么型号)

  • 小米手机怎么更改国家(小米手机怎么更改锁屏密码)

    小米手机怎么更改国家(小米手机怎么更改锁屏密码)

  • 淘宝过了7天能退货吗(淘宝超过七天后可以退换吗)

    淘宝过了7天能退货吗(淘宝超过七天后可以退换吗)

  • 苹果11多厚(iphone11多厚)

    苹果11多厚(iphone11多厚)

  • 美团拼团一定要好友吗(美团拼团一定要认识吗)

    美团拼团一定要好友吗(美团拼团一定要认识吗)

  • 如何退出教师控制屏幕(如何退出教师控制屏幕不让人发现)

    如何退出教师控制屏幕(如何退出教师控制屏幕不让人发现)

  • 线下支付送流量在哪看(线下支付送流量是真的吗)

    线下支付送流量在哪看(线下支付送流量是真的吗)

  • r17怎么没有视频美颜(r17坼机视频)

    r17怎么没有视频美颜(r17坼机视频)

  • 苹果xr的手电筒在哪里(苹果xr的手电筒怎么开不了)

    苹果xr的手电筒在哪里(苹果xr的手电筒怎么开不了)

  • 微信设备锁在哪里解除(微信设备锁在哪里设置OPPO)

    微信设备锁在哪里解除(微信设备锁在哪里设置OPPO)

  • 智能手机电池最大容量(智能手机电池最耐用的是哪一款)

    智能手机电池最大容量(智能手机电池最耐用的是哪一款)

  • 怎么ping网络地址详细教程(如何pingip地址)

    怎么ping网络地址详细教程(如何pingip地址)

  • 塔拉纳基山,新西兰艾格蒙特国家公园 (© Francesco Vaninetti/plainpicture)(塔拉基之死)

    塔拉纳基山,新西兰艾格蒙特国家公园 (© Francesco Vaninetti/plainpicture)(塔拉基之死)

  • vue3使用viewer(vue viewui)

    vue3使用viewer(vue viewui)

  • 工资超出5000怎么样纳税
  • 一般纳税人优惠政策最新2022标准
  • 免费赠送货物出租合同
  • 团建费用会计怎么写记账凭证
  • 房地产企业销售额排名
  • 投资款转为借款需要哪些证据
  • 以旧换新的金子划算吗
  • 出口退税代理费用大概多少
  • 特殊业务分录
  • 红字发票打印乱码怎么办
  • 企业向职工发放的奖金属于
  • 租金收入的印花税税率是多少
  • 不开票的收入怎么办
  • 法院判决书能作为证据使用吗
  • 土地租赁期间政府征收
  • 小规模纳税人销售自己使用过的物品
  • 文件夹如何更改图标
  • 社保稽查补社保按什么基数来
  • 财务报表怎么判断盈亏
  • 怎么查上市公司
  • 怎么租一个月
  • 从性能方面考虑的因素
  • 什么收入不用缴纳增值税
  • 收回已核销的坏账分录
  • 招聘下岗职工一名
  • 前端是指什么工作
  • username命令
  • jsp页面构成
  • 外经证预缴税款之后剩下的税款交到哪呢
  • 企业交的社保包含什么
  • 小规模纳税人没达到起征点怎么申报
  • 完美解决怠速抖动加油就平稳
  • phpcms二次开发教程
  • 织梦怎么改文字
  • Linux下实现MySQL数据备份和恢复的命令使用全攻略
  • pytest unittest
  • 织梦如何使用
  • 单位财务报销制度和流程
  • 基金管理公司是什么意思
  • 加工企业怎么做账务处理
  • 无法收回的应收账款可以税前扣除吗
  • 税控盘减免税款月末不用交税还要结转吗
  • 贴现法年末偿还金额
  • 提前报废固定资产会导致账面价值减少吗
  • 汇算期间取得以下收入
  • 对外投资的会计科目
  • 长期待摊费用是当月摊销还是次月摊销
  • 应收账款周转率计算公式
  • 购买单位什么意思
  • 客户要扣货款太多怎么处理
  • 研发投入算到产值里吗
  • sqlserver的游标
  • Navicat for MySQL(mysql图形化管理工具)是什么?
  • w10的产品密钥
  • centos操作命令
  • ubuntu 16.04 u盘安装
  • ghost怎么安装gho文件
  • 如何关闭win8自带杀毒
  • 老毛桃U盘启动盘工具安装Win8的详细图文教程
  • mac如何全屏窗口
  • linux系统怎么添加用户名和密码
  • 使用灭火器人要站在上风口还是下风口
  • python批量更改文件名称
  • cocos2d-x教程
  • 关于植物的现代诗
  • veth pair源码
  • scrollWidth,clientWidth与offsetWidth的区别
  • perl -pi
  • css的reset
  • vue框架写淘宝购物车
  • 一篇文章让你彻底读懂德国历史
  • nodejs的流处理模块
  • unity操作教程
  • js日期格式化方法
  • javascript学到什么程度
  • adb shell命令
  • python读取文件的操作方法
  • 宁波镇海哪里可以赶海
  • 湖南地税网上办税服务厅
  • 环保职责及管理范围
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设