spock框架中测试桩怎么用
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章主要介绍了spock框架中测试桩怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用场景when:int a = 12;i
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
互联网佳科技有限公司
互联网科技公司的优势
科技股互联网
腾讯阿里互联网科技
互联网科技开发公司
万易互联网科技有限公司
唐信互联网科技 大连
互联网高科技企业
重庆科技学院互联网
衡水科技产业互联网平台
汉立互联网科技有限公司联系电话
上海电发互联网科技有限公司
移动互联网科技股
互联网科技研发水平
上海万顺科技互联网有限公司招聘
长沙渺峰互联网科技有限公司
好易买互联网科技
科技互联网公司两年变化
互联网科技创新方面的资料
中关村互联网科技集团
狮子座互联网科技
伴你行互联网科技有限公司
互联网科技类展会
青岛中康互联网医疗科技有限公司
互联网科技大赛获奖感言
黑云互联网科技有限公司
云南省自由互联网科技有限公司
美国五大互联网科技公司市值多少
青岛易易互联网科技