首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Spock测试框架实践(六)

在上一次Spock实践中我们介绍了Spock文档化测试和HTTP接口测试实践,今天我们用Spock做一些mock实践。...对于测试来说,除了能够输入-输出进行验证之外,还希望能验证模块与其他模块之间交互是否正确,比如“是否正确调用了某个对象中函数”;或者期望被调用模块有某个返回值,等等。...各类mock框架让这类验证变得可行,而spock除了支持这类验证,并且做更加优雅,下面我们看一下在Spockmock应用实践。...二、Stubbing mock对象定义函数返回值可以用如下方法: subscriber.receive(_) >> "ok" 符号代表函数返回值,执行上面的代码后,再调用subscriber.receice...四、其它类型mock对象 Spock也支持spy、stub之类mock对象,但是并不推荐使用,因为使用“正规”BDD思路写出代码不需要用这些方法来测试,官方解释是: Think twice

1.7K20

Spock单元测试框架以及在美团优选实践

Spock自带Mock功能,使用简单方便(也支持扩展其他Mock框架,比如PowerMock),再加上Groovy动态语言强大语法,能写出简洁高效测试代码,同时能方便直观地验证业务代码行为流转,增强工程师代码执行逻辑可控性...这个就是SpockMock用法,当调用studentDao.getStudentInfo()方法时返回一个List。...,有个参数id,这种情况下如果使用SpockMock模拟调用的话,可以使用下划线_匹配参数,表示任何类型参数,多个逗号隔开,类似于Mockitoany()方法。...动态Mock静态方法 考虑场景,让静态方法每次调用返回不同值。...使用SpockMock模拟convert()方法调用,orderMapper.convert(_) >> order,再结合where表格,实现动态Mock接口功能。

2.7K20
您找到你想要的搜索结果了吗?
是的
没有找到

Spock单元测试框架以及在美团优选实践

Spock自带Mock功能,使用简单方便(也支持扩展其他Mock框架,比如PowerMock),再加上Groovy动态语言强大语法,能写出简洁高效测试代码,同时能方便直观地验证业务代码行为流转,增强工程师代码执行逻辑可控性...这个就是SpockMock用法,当调用studentDao.getStudentInfo()方法时返回一个List。...,有个参数id,这种情况下如果使用SpockMock模拟调用的话,可以使用下划线_匹配参数,表示任何类型参数,多个逗号隔开,类似于Mockitoany()方法。...动态Mock静态方法 考虑场景,让静态方法每次调用返回不同值。...使用SpockMock模拟convert()方法调用,orderMapper.convert(_) >> order,再结合where表格,实现动态Mock接口功能。

3.1K20

让单测变得如此简单 -- spock 框架初体验

单元测试通过程序中每个部分进行独立测试覆盖,且在每次代码更新后自动执行,保证了新修改不会影响到旧功能。...Mock 测试 在工程项目中,我们编写程序往往依赖于外部接口调用,但在单测环节,我们应该做到保证我们程序在外部接口返回正确前提下结果正确性,但由于实际运行环境、权限等等条件限制,我们往往不能在例行自动化单元测试中真的去调用外部接口...Mock 测试通过模拟外部调用结果,让我们测试程序得以继续运行,在 JUnit 中,我们需要使用 Mockit 来实现接口 Mock,同时,Mock 编写也较为复杂,这些在 spock 中就显得非常简单了...公共方法 JUnit 有一个很方便功能,那就是可以定义每个测试方法开始前与结束后调用方法,以便做一些公共自动处理功能,spock 也提供了相应机制: 方法 说明 setup() 每个方法执行前调用...cleanup() 每个方法执行后调用 setupSpec() 每个方法类加载前调用一次 cleanupSpec() 每个方法类执行完调用一次 7.

1.2K20

python和js交互调用方法

【万能方式】使用jqueryajax与后台交互,设置不同参数,可以get也可以post 上面的例子用ajax方式,前端代码如下 var data= { 'a': $('input...本质上,前端与后端交互都是通过json完成 至于表单提交,就不需要写js了,在form表单里面有有一个submit类型按钮,点击时,会自动提交到后台对应路由上进行处理。...实例扩展: python使用flask与js进行前后台交互例子 flask与js进行前后台交互代码如下,后台给前端发数据: python部分: # -*- coding: utf-8 -*- from...success: function (data) { console.log(data) } }) </script </body </html 到此这篇关于python和js交互调用方法文章就介绍到这了...,更多相关python和js如何交互内容请搜索ZaLou.Cn以前文章或继续浏览下面的相关文章希望大家以后多多支持ZaLou.Cn!

5.1K31

单元测试填坑笔记,新技能Get!

对于 Mock 代码来说,我们关注点是 Mock 方法有没有被调用,以什么样参数被调用,被调用次数,以及多个 Mock 函数先后调用顺序。...比如,测试addUser方法时,如果是Stub方式则关注方法返回结果,即用户是否添加成功,邮件是否发送成功;而Mock方式则倾向于本次添加行为验证,比如sendEmail方法调用次数等。...目前大多数mock工具都提供mock退化为stub支持,以Mockito为例,我们可以通过anyObject(), any等方式参数进行匹配;使用verify方法可以对方法调用次数和参数进行检验...当然,除了执行结果进行检查,也能对执行过程进行校验,如方法调用次数等。下面是笔者在工作中经常见到写法,这些都是无效单测。...单测实战 写单测一般包括3个部分,即Given(Mock外部依赖&准备Fake数据),When(调用被测方法)以及Then(断言执行结果),这种写法和Spock语法结构也是一致

58730

Spock框架Mock静态资源经验汇总

前面讲了Spock框架Mock对象、方法经验总结,今天分享一下Spock框架中Mock静态资源实践经验汇总。分成「静态资源」和「混合场景」。...@PowerMockIgnore这个注解用于忽略一些检查和异常。...,既要Mock静态方法,也要Mock对象方法,就必须使用PowerMock提供能力。...原因之前提过,主要是因为增加了类注解之后,Spock和Mockito一Mock对象和定义方法功能会无法运行,这个没找到具体文档做出区分,所以如果遇到混合场景,建议使用PowerMock进行对象Mock...mockito-inline中,也是支持静态类和静态方法Mock,但在Spock中极难使用,资料说是因为项目pom中Spock版本与Mockito版本不一致导致,尝试了几个组合依然无法解决,又有人言

1.5K30

大型企业通常如何进行单元测试?

每个方法或类应只负责一项任务,这样测试用例只需关注当前方法有效性,而不需要考虑方法之间调用。每个测试用例也应只关注一件事情。...Mock作用是模拟所依赖资源,我们可以假定依赖操作是成功或失败,这样测试只需关注自身代码依赖产生响应结果即可。...同时,Spock不仅局限于模拟(Mock),还提供各种高效功能(这些是传统JUnit和Mockito无法实现):Spy:可以对部分资源进行模拟,方便地同一类内相互调用方法进行模拟和验证。...Mock依赖资源进行模拟,同时验证依赖资源被调用次数。例如,测试Redis写功能时,可以模拟Redis客户端,验证传入方法参数是否符合预期,以及验证Redis写入方法调用次数。...Stub:依赖资源进行模拟返回一个结果,不关心调用次数或参数是否匹配预期。可以直接忽略验证方法成员封装级别,可以直接测试私有声明方法和变量。

5900

单元测试框架spock和Mockito应用

先介绍一下两位主角 spock是一款基于Groovy语言单元测试框架,其基础也是JavaJunit,目前最新版已经到了2.0,但对Groovy和响应Java版本要求较高,具体信息参考:Spock...mockedList.add("3") mockedList.add("3") mockedList.add("3") expect:"验证属性以及方法调用次数...模拟方法返回"() { given: "虚拟一个迭代器对象" def iterator = mock(Iterator.class) when(iterator.next...3 == listsss.get(3) } /** * 对于未指定mock方法,spy默认会调用真实方法,有返回值返回真实返回值,而mock默认不执行,有返回值,默认返回...,Mockito基础功能在spock应用还是非常流畅,但是一些高级语法还是无法使用,如果在实际项目中使用请多调研两者差别,大概率还是要混合编程。

2.2K50

spock】单测竟然可以如此丝滑

expect 语法意义就是在 expect 块内,所有表达式成立则验证通过,反之有任一个不成立则验证失败。这里引入了一个块概念。怎么理解 spock 块呢?...上面 『 | 』 号这么整齐。都是我一个空格一个 TAG 按出来。虽然语法不要求对齐,但是逼死强迫症。...如果期望不执行这个方法就是 0 * xx ,这在条件代码验证中很有用,然后 >> null 又是什么意思?...3.7 其它内容 3.7.1 公共方法 方法名 作用 setup() 每个方法执行前调用 cleanup() 每个方法执行后调用 setupSpec() 每个方法类加载前调用一次 cleanupSpec...() 每个方法类执行完调用一次 这些方法通常用于测试开始前一些初始化操作,和测试完成后清理操作,如下: def setup() { println "方法开始前初始化"

1.3K30

Spock框架Mock对象、方法经验总结

+,Spock自带Mock和Spy足够好了,对于对象行为模拟满足绝大部分场景,但是涉及静态方法模拟时候存在局限性,所以引入Mockito和PowerMock来实现设计静态方法测试模拟场景。...这里不是很建议import static ,因为可能出现混用以及不易排查问题。 由于目前测试中没有遇到使用Spy放行逻辑,所以均使用Mock模式,需要对Mock对象方法进行模拟。...上述Demo在Mock方法时候参数进行了断言和处理,这也是Spock框架一个特性,其他均为Groovy语法特性。...,包括在通过Mock对象创建对象方法中,如果调用到定义过行为方法,也会走自定义逻辑。...通常我们需要构建返回对象,如果对象需要赋值属性过多,可以使用初始化赋值方法,下面是Mock一个返回list方法返回值Demo: Mockito.when(newser.selectAllService

4.9K74

spock测试桩mock和stub区别及使用场景

如图,有如上方法调用关系(模块依赖关系):A调用B和E方法,B调用C和D方法。 在使用spock进行单元测试时,有如下情景,分别可使用stub和mock。...以上是spock中stub测试桩使用场景,总结为一句就是: stub测试桩给被调用者( 方法/模块)制造假返回值,以便不影响调用测试。...使用mock测试桩 mock测试桩就是模拟一个测试结果。如下图,A类调用类B和C类某个方法: ?...如果要测试A方法,但是我们没办法调用B来检测结果,就可以使用mock测试桩,生成一个Bmock对象。检验结果时,可以使用Bmock对象替代B。...对象断言请参考: http://jvm123.com/2019/09/spock-ce-shi-zhuang-2.html 以上是spockmock测试桩使用场景,总结为一句就是: mock测试桩给被测试方法模拟一个预期效果

3.8K50

在Spring Boot项目中使用Spock框架

在这个小节中我们会利用Spock、Mockito一起编写一些测试用例(包括Controller测试和Repository测试),感受下Spock使用。...Note:关于Spock文档见这里:Spock Framework Reference Documentation 根据《单元测试艺术》一书中提到,单元测试包括:准备测试数据、执行待测试方法、...setup:这个块用于定义变量、准备测试数据、构建mock对象等; expect:一般跟在setup块后使用,包含一些assert语句,检查在setup块中准备好测试环境 when:在这个块中调用要测试方法...; then : 一般跟在when后使用,尽可以包含断言语句、异常检查语句等等,用于检查要测试方法执行后结果是否符合预期; cleanup:用于清除setup块中环境做修改,即将当前测试用例中修改回滚...Spock也提供了setup()和cleanup()方法,执行一些给所有测试用例使用准备和清除动作,例如在这个例子中我们使用setup方法:(1)mock出web运行环境,可以接受http请求;(2)

2K10

Spock测试框架实践(二)

在上一次Spock实践中我们介绍了Spock优点和Demo搭建,今天我们继续介绍一些Spock常用实践。...如果要验证有没有跑出异常,可以使用thrown ? 5.2.2 断言 要获取抛出异常对象,可以用以下语法: ? 如果要验证没有抛出某种异常,可以用notThrown(): ?...但是传统测试框架很难轻松制造数据,要么依赖反复调用,要么用xml或者data provider函数之类难以理解和阅读方式。 ?...而在spock中,通过where block可以让这类需求实现起来变得非常优雅。 ? 可以为标记@Unroll方法声明动态spec名。运行时,名称会被替换为实际参数值。...除此之外,where block还有两种数据定义方法,并且可以结合使用。 ?

1.4K20

SpringCloud升级之路2020.0.x版-40. spock 单元测试封装 WebClient(下)

本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 我们继续上一节,继续使用 spock 测试我们自己封装 WebClient 测试针对...readTimeout 重试 针对响应超时,我们需要验证重试仅针对可以重试方法(包括 GET 方法以及配置可重试方法),针对不可重试方法没有重试。...我们可以通过 spock 单元测试中,检查对于负载均衡器获取实例方法调用次数看出来是否有重试 我们通过 httpbin.org ‘/delay/秒’ 实现 readTimeout,分别验证: 测试...loadBalancerClientFactoryInstance = Spy(); ServiceInstanceListSupplier serviceInstanceListSupplier = Spy(); //所有测试方法执行前会调用方法...loadBalancerClientFactoryInstance = Spy(); ServiceInstanceListSupplier serviceInstanceListSupplier = Spy(); //所有测试方法执行前会调用方法

27510

FunTester原创文章(基础篇)

调用京东万象数字营销频道新闻api实例 httpclient遇到socket closed解决办法 httpclient4.5如何确保资源释放 httpclient如何处理302重定向 基于java直线型接口测试框架初探...--视频讲解 单元&白盒 Maven和Gradle中配置单元测试框架Spock Groovy单元测试框架spock基础功能Demo Groovy单元测试框架spock数据驱动Demo 人生苦短?...、单元测试、系统测试 从单元测试标准中学习 白盒测试扫盲 Mock System.in和检查System.out 单元测试框架spock和Mockito应用 Mockito框架Mock Void方法 JsonPath...如何单行多次update接口进行压测 如何多行单次update接口进行压测 如何获取JVM堆转储文件 性能测试中标记每个请求 如何N个接口按比例压测 如何性能测试中进行业务验证 性能测试中记录每一个耗时请求...JsonPath验证类既Groovy重载操作符实践 Python python使用filter方法递归筛选法求N以内质数(素数)--附一行打印心形标记代码解析 关于python版微信使用经验分享 python

2.5K10

2021年软件测试工具总结(1):抓包工具、单元测试工具

Spock JUnit JUnit是一个为Java设计开源单元测试框架,多数 Java 开发环境都已经集成了 JUnit 作为单元测试工具。...主要有以下特点 针对JavaEE和基于Spring应用程序容器外集成测试 使用记录和验证语法模拟API Mock API以替换实现。...支持类级别整体mock和部分方法重写,以及实例级别整体mock和部分mock。...可以mock静态方法、私有变量及局部方法 代码覆盖率统计工具 官网地址:http://jmockit.org/ 单元测试覆盖率工具 JCoCo Jacoco是一个开源免费Java代码覆盖工具,由EclEmma...很多第三方工具提供了JaCoCo集成,如sonar、Jenkins等 除了Jacoco,cobertura与emma这两款工具也是用来统计单元测试覆盖率 官网地址:https://www.jacoco.org

2.3K20

Android短信验证码监听解决onChange多次调用方法

这里给个传送门: MIUI通知类短信权限坑 识别短信验证码并提取还是挺常见一个需求。...所要解决问题主要有: 1、如何监听 2、如何提取短信中验证码 3、监听多次调用问题 直接看下面代码吧,很明了。需要注意点有就是onChange会多次调用。...其实打Log就看出了,收到一条短信会调用两次onChange,Log结果如下: mUri===content://sms/raw/20 mUri===content://sms/inbox/20 安卓...7.0以上系统,点击标记为已读,也会调用一次 mUri===content://sms 收到一条短信都是uri后面都会有确定一个数字,对应数据库_id,比如上面的20 public static class...,希望大家学习有所帮助。

2.4K20
领券