spock框架中测试桩怎么用
发表于:2025-01-31 作者:千家信息网编辑
千家信息网最后更新 2025年01月31日,这篇文章主要介绍了spock框架中测试桩怎么用,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。使用场景when:int a = 12;i
千家信息网最后更新 2025年01月31日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安全错误
数据库的锁怎样保障安全
袁州租房软件开发
海南电信dns服务器备用服务器
企业 数据库系统
个性化网络技术服务价目表
河南工控软件开发要多少钱
用友t 安装数据库视频
网络安全事件如何防范
无线网络安全设置怎么更换
北航的网络安全专业排名怎么样
玩游戏服务器总是断开连接
有关网络安全的英语电子海报
dhc网络技术支持
ntp服务器怎么搭建
西安技校有软件开发吗
网络安全宣传观后感800字
高频交易软件开发需求
华戴网络技术有限公司
用于软件开发用什么语言
河南软件开发项目
直销拆分软件开发
宇信科技 互联网
宝塔怎么打不开数据库
数据库搭建与管理
苹果刷机无法联系更新服务器
宁波app软件开发的前景
杭州软件开发公司那个好
网络技术需求量大吗
无线网络安全黑板报党史
深圳泰为软件开发公司
百色计算机网络技术培训