位置: 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织梦显示副栏目文章的方法(织梦前台数据不能存入中文)

  • 出口退税进项税额转出怎么申报
  • 主营业务是家电吗
  • 预缴纳税和年度汇缴
  • 发票金额太大怎么拆分数量,单价不变还是数量不变
  • 收到社保生育津贴摘要怎么写
  • 资产负债表本期盈余为什么是负数
  • 金蝶迷你版会计科目代码格式
  • 小规模纳税人免征增值税政策
  • 发票税号错了怎么重开
  • 手撕发票怎么领取需要什么证件
  • 出纳做账流程视频
  • 网络团购的类型
  • 城镇土地使用税暂行条例
  • 企业购进货物暂估入库的会计分录如何处理?
  • 家电公司销售电器赠送小礼品如何做账?
  • 税友的票可以抵扣吗?
  • 筹建期装修费用计入什么科目
  • 一般纳税人能开普票吗,几个点
  • 不动产有法律效力吗
  • 营业额500万以上税率
  • 施工现场应建立什么
  • 委托加工白酒的计税依据
  • 股票投资报酬率怎么算excel
  • 主营业务成本的二级科目有哪些
  • 行纪人的权利
  • PHP:mb_convert_encoding()的用法_mbstring函数
  • 增值税已认证抵扣
  • ac1203路由器
  • 被雪覆盖的山峰
  • 西西弗书店主管级
  • 工会筹备金计税依据
  • 应交城建税怎么算
  • 航天金税盘发票作废流程视频
  • 劳务公司企业所得税税负率
  • 【JavaScript】【5】定时器(包含回调函数与Promise)
  • 好家伙41集
  • mfc中format
  • 什么叫财政补助收入
  • 预付一年的技术服务费
  • 商业承兑汇票如何追索
  • 不抵扣勾选有什么风险
  • 无偿调入的固定资产其贷方应计入
  • 期权费如何入账
  • 税金及附加和营业税金及附加是一个科目吗
  • 收到土地使用权的租金
  • 年底没有取得发票企业所得税
  • 线上线下财务
  • 购买产品样品计入什么科目
  • 工会经费购买的固定资产处置
  • 抵扣旅客运输服务申报时填哪行
  • 产品成本计算的分批法适用于
  • 未分配利润转增股本要交税吗
  • 小规模纳税人标准500万是含税吗
  • 小规模纳税人核定销售额
  • 收到红字发票进项税怎么做账务处理
  • 财务报表是否合法公允
  • 确认收入一定要交增值税吗
  • 商品流通企业如何控成本
  • 如何更换会计账号
  • 微信开发中工具
  • centos邮件服务器
  • 捷波mig41tm主板
  • wlanplus是什么软件
  • ubuntu20.04怎么用
  • win8应用程序
  • win10新建文件夹的快捷键是哪个
  • redhat linux yum
  • win8怎么关闭电脑
  • 简单理解贴现
  • div +css
  • js类继承的几种方式
  • js如何输出页面内容
  • 使用二氧化碳灭火器时人应该站在什么位置
  • python爬虫教程推荐
  • JavaScript中void(0)的具体含义解释
  • python flask框架 web服务器
  • 国家税务总局2018年61号公告
  • 电子税务局开的发票怎么作废
  • 淄博市地方税务局
  • 北京市停车发票
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设