千家信息网

spock框架中测试桩怎么用

发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,这篇文章主要介绍了spock框架中测试桩怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用场景when:int a = 12;i
千家信息网最后更新 2025年12月02日spock框架中测试桩怎么用

这篇文章主要介绍了spock框架中测试桩怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

使用场景

when:int a = 12;int b = xxxService.squre(a);int c = xxxService.plus(a, b);then:c == 100

假如我们需要测试以上代码,但被告知squre方法目前还没开发完成,或者正在修改中,现在使用无法得到正确的结果。

这时就可以用测试桩:给squre()方法造一个或多个假的返回值,让我们能够正常测试后面的plus()方法。

测试桩Stub与Mock的具体解释在后面代码注释中做了说明。

使用实例

package com.yawn.spockimport com.yawn.spock.service.CalculateInterfaceimport com.yawn.spock.service.CalculateServiceimport spock.lang.Specification/** * 
 * * Stub与Mock * (1)相同点 *      Stub和Mock对象都是用来模拟外部依赖,使我们能控制。 *      如果被测程序、系统或对象,我们称之为A。在测试A的过程中, *      A需要与程序、系统或对象B进行交互,那么Stub/Mock就是用来模拟B的行为来与A进行交互。 * (2)不同点 *      Stub,也即"桩",很早就有这个说法了,主要出现在集成测试的过程中, *      从上往下的集成时,作为下方程序的替代。作用如其名,就是在需要时, *      能够发现它存在,即可。就好像点名,"到"即可。 *      Mock,主要是指某个程序的傀儡,也即一个虚假的程序, *      可以按照测试者的意愿做出响应,返回被测对象需要得到的信息。 *      也即是要风得风、要雨得雨、要返回什么值就返回什么值。 * *      总体来说,stub完全是模拟一个外部依赖,用来提供测试时所需要的测试数据。 *      而mock对象用来判断测试是否能通过,也就是用来验证测试中依赖对象间的交互能否达到预期。 * 
* @author yawn * 2019/6/10 14:52 */class MockSpec extends Specification { def "mock 测试桩"() { given: "构造测试桩" CalculateInterface calculateService = Stub(CalculateInterface) calculateService.plusPlus(_) >> 1 when: int x = calculateService.plusPlus(12) int y = calculateService.plusPlus(3) then: x == 1 y == 1 } def "mock 测试桩得到不同的多个值"() { given: "构造测试桩" CalculateService calculateService = Stub(CalculateService) calculateService.plusPlus(_) >>> [1, 2, 3] when: int x = calculateService.plusPlus(12) int y = calculateService.plusPlus(3) int z = calculateService.plusPlus(2) then: x == 1 y == 2 z == 3 }}

使用Stub与Mock方法就可以得到对应的傀儡实例,我们可以对这个 傀儡 实例定义其方法的返回值。

calculateService.plusPlus(_) >> 1 // 定义了一个返回值

calculateService.plusPlus(_) >>> [1, 2, 3] // 定义了多个返回值,每次执行,按照顺序取一个作为返回值。

感谢你能够认真阅读完这篇文章,希望小编分享的"spock框架中测试桩怎么用"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

测试 对象 方法 程序 篇文章 傀儡 多个 实例 框架 不同 代码 就是 系统 过程 相同 虚假 不同点 也就是 价值 作用 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 北京合源互联网科技有限公司 miui 媒体服务器 南昌鲲鹏服务器订购 er图和数据库表什么关系 王者荣耀服务器维护s14 物理学专业转软件开发 百度网盘存在同名数据库 刚开传奇需要买bgp服务器吗 达梦数据库优缺 嘉定区信息软件开发定制价钱 使命召唤中国服务器 合川区一站式软件开发流程参考价 集团网络安全工作建议 法律工具软件开发成本 需要手机验证码的无线网络安全吗 上海天放网络技术公司电话 软件开发用的是什么语言 宝塔修改数据库图片路径 来安口碑好软件开发技术大概费用 软件开发过程中的例图 本地网络技术定做价格 我的世界荣耀战神服务器在哪里 php插入数据库中文乱码 数据库安全防护解决方案 软件开发技术文档 投标 c如何连接sql数据库 金碟软件数据库问题 交换机到服务器六类网线接法 数据库出现负载过高的情况 工程项目网络安全风险源有哪些
0