测试同学们平时用的比较多的测试框架和工具,如JMockit、EasyMock、Mockito和PowerMock,大家普遍认为代码可读性差,多组测试数据使用起来麻烦等缺点,今天小编就来给大家介绍一款简洁、优雅、易理解的测试框架——Spock...首先给大家简单介绍下这款测试框架,Spock是一个基于Java和Groovy应用的测试框架,通过JUnit runner调用测试,兼容绝大部分JUnit的运行场景(IDE,构建工具,持续集成等),Spock...下面我们开始Spock的实践: 一.环境搭建 IDEA > Eclipse Gradle > Maven (官网中有详细的Gradle配置说明https://gradle.org/) IDEA+Maven...插件和附加包(安装时选择Groovy2.4版以上的comliper,地址https://github.com/groovy/groovy-eclipse/wiki) 二.写一个DEMO 1.创建空白项目spock_demo...三.Spock中的许多概念和特征都来自jUnit,我们总结看下Spock测试模板方法的定义和JUnit的对比,后续我们会对各个模板方法进行介绍和测试实践,请大家持续关注搜狗测试公众号。 ?
在上一次Spock实践中我们介绍了Spock的文档化测试和HTTP接口测试实践,今天我们用Spock做一些mock的实践。...各类mock框架让这类验证变得可行,而spock除了支持这类验证,并且做的更加优雅,下面我们看一下在Spock里mock的应用实践。...一、mock 首先我们在Spock中创建一个mock对象: class PublisherSpec extends Specification { Publisher publisher...message1" ) >> "ok" when: publisher.send( "message1" ) then: 1 * subscriber.receive( "message1" ) 此时spock...四、其它类型的mock对象 Spock也支持spy、stub之类的mock对象,但是并不推荐使用,因为使用“正规的”BDD思路写出的代码不需要用这些方法来测试,官方的解释是: Think twice
在上一次Spock实践中我们介绍了Spock的数据驱动和一些技巧,今天我们继续介Spock的一些实用技巧。 1.循环执行 ? 2、脚本断言 好的测试脚本,离不开科学合理的断言 ?
Spock相比JUnit有易读、简洁、自带Mock等特性,可以减少单元测试编写时间,而且bug更少,可读性更好。...Spock的特性 代码易读 易读的测试用例名字,可以使用任意字符串,比如下面中test stack 易理解的代码模块:given, when, then, expect def "test stack...| | 3 1 3 | 1 false Expected :1 Actual :3 Mock and stub: Interactions Spock...环境下测试,还需要添加一下依赖--> org.spockframework spock-spring...:没有配置插件gmavenplus-plugin 参考 Spock Framework Reference Documentation Spock 一个优雅的Groovy/Java测试框架 Spock
在上一次Spock实践中我们介绍了Spock的数据驱动和一些技巧,今天我们用Spock做一些测试实践。 一、文档化测试实践 可读性是可维护性的基础,好的测试,业务人员也能看懂,适合敏捷开发模式。...用Spock框架来实现,如下: ? 最佳实践,通过插件自动生成结构化用例: ? 二、http接口测试实践 ? ? ? ?
在上一次Spock实践中我们介绍了Spock的基本概念,今天我们继续介Spock的数据驱动和一些技巧。...一、首先介绍下spock中的数据驱动: Spock框架支持多种数据驱动方式 1.数据表,强于可读性,适合数据量小的场景 2.数据管道,强于可维护性,适合数据量多的场景 步骤:
在上一次Spock实践中我们介绍了Spock的优点和Demo的搭建,今天我们继续介绍一些Spock常用的实践。...首先介绍下spock中的几个基本概念: 1、Specification 在Spock中,待测系统(system under test; SUT) 的行为是由规格(specification...在使用Spock框架编写测试时,测试类需要继承自Specification类。...4、Feature Mehtods 这是Spock规格(Specification)的核心,其描述了SUT应具备的各项行为。...而在spock中,通过where block可以让这类需求实现起来变得非常优雅。 ? 可以为标记@Unroll的方法声明动态的spec名。运行时,名称会被替换为实际的参数值。
前面讲了Spock框架Mock对象、方法经验总结,今天分享一下Spock框架中Mock静态资源的实践经验汇总。分成「静态资源」和「混合场景」。...原因之前提过,主要是因为增加了类注解之后,Spock和Mockito一的Mock对象和定义方法的功能会无法运行,这个没找到具体的文档做出区分,所以如果遇到混合场景,建议使用PowerMock进行对象的Mock...drive.send() } def "day"() { } } PS:在Mockito高版本的依赖mockito-inline中,也是支持对静态类和静态方法的Mock的,但在Spock...中极难使用,资料说是因为项目pom中的Spock版本与Mockito版本不一致导致的,尝试了几个组合依然无法解决,又有人言,跟Groovy依赖的版本也有关系,直接破防,放弃了这个方案。
在spring环境中使用spock,也就是要自动注入被测试的实例,不需要我们手动初始化实例。...如下: package com.yawn.spock import com.yawn.spock.service.CalculateService import org.springframework.beans.factory.annotation.Autowired...import org.springframework.boot.test.context.SpringBootTest import spock.lang.Specification /** *...这三篇文章所有的完整测试代码都在我的gitee: https://gitee.com/yawensilence/demo-spock 。...本文转载自:jvm123-java技术分享站 原文链接:http://jvm123.com/2019/08/spock-springboot/
在使用spock测试框架时,常常会有如下的测试代码出现: // 测试方法 def "test plus 1"() { given: "准备数据" def...其实,在spock框架中,使用到一些groovy特有的语法格式,这些语法在Java中并不常见,具体如下: Labeled statements 标签语句 Any statement can be associated...但是在使用groovy语言的spock测试框架中,这种语法很流行,因为它确实让测试代码更加简单明了。...例如,下面spock框架具体测试用例和答应出的结果: ?...这并不是groovy的语法,而是spock框架支持的,这种写法更能体现数据驱动测试的思想,让测试者更加专注于测试用例本身。
Java项目中使用groovy简化测试 、 java项目测试框架spock的使用教程 简介 Spock 框架是一个基于groovy语法的测试框架,由于使用groovy,所以使用起来比 junit 更加灵活...如果使用过junit,spock的则很容易上手,可以类比来学习。...使用 下面直接使用实例来介绍spock的用法: 1.加入依赖 org.spockframework...import spock.lang.Shared import spock.lang.Specification /** * spock 测试 * @author yawn * 2019...本文来自 java技术分享站(jvm123.com)http://jvm123.com/2019/08/spock.html
使用实例 package com.yawn.spock import com.yawn.spock.service.CalculateInterface import com.yawn.spock.service.CalculateService...import spock.lang.Specification /** * * * Stub与Mock * (1)相同点 * Stub和Mock对象都是用来模拟外部依赖...本文转载自:jvm123-java技术分享站 原文链接:http://jvm123.com/2019/08/spock-ce-shi-zhuang/
spock是一款全能型的单元测试框架。 最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock。...由于本身使用Groovy的原因,比较钟情于spock框架,但是奈何兼容性比较差,特别是跟Mockito等框架的高级语法的兼容。...不过这不妨碍spock是一个非常优秀的单元测试框架,特别体现在用例的形式和测试报告的展示方式以及报错信息的展示(这个我最中意)。 在简单看过官方文档之后做了一些简单的Demo,分享给大家。...(官方文档貌似有段时间没有更新了,如果用的话建议升级最新版) package com.FunTester.spock.pratice import org.slf4j.Loggerimport spock.lang.Sharedimport...spock.lang.Specification import static com.fun.frame.SourceCode.getLogger class test01 extends Specification
先介绍一下两位主角 spock是一款基于Groovy语言的单元测试框架,其基础也是Java的Junit,目前最新版已经到了2.0,但对Groovy和响应的Java版本要求较高,具体信息参考:Spock...testCompile 'org.mockito:mockito-core:2.7.22' testCompile group: 'org.spockframework', name: 'spock-core...import spock.lang.Specification import static com.fun.config.Constant.SPACE_1 import static com.fun.frame.SourceCode.getLogger...expect: integers.size() == 9 integers.get(0) == 1 } } 经过我的测试,Mockito的基础功能在spock...参考文章: Maven和Gradle中配置单元测试框架Spock Groovy单元测试框架spock基础功能Demo Groovy单元测试框架spock数据驱动Demo ---- 郑重声明:“FunTester
spock 这名称来源,个人猜测是因为《星际迷航》的同名人物(封面图)。那么spock 是如何提高编写单测的效率呢?...其中第一个包 spock-core 提供了 spock 的核心功能,第二个包 spock-spring 提供了与 spring 的集成(不用 spring 的情况下也可以不引入)。...另外就是 spock 的测试类需要继承 spock.lang.Specification 类。...Spock in Java 慢慢爱上写单元测试[2] 使用Groovy+Spock轻松写出更简洁的单测[3] Spock 测试框架的介绍和使用详解[4] Spock 基于BDD测试[5] Spock 官方文档...: http://jvm123.com/2019/08/spock.html [5] Spock 基于BDD测试: https://www.alicharles.com/article/spock/#_
单元测试 下面使用Spock单元测试框架进行测试,有兴趣的可以看看之前的文章: 单元测试框架spock和Mockito应用 Spock 2.0 M1版本初探 Maven和Gradle中配置单元测试框架Spock...Groovy单元测试框架spock基础功能Demo Groovy单元测试框架spock数据驱动Demo 代码如下: package com.funtest.spock import org.apache.logging.log4j.LogManager...import org.apache.logging.log4j.Logger import spock.lang.Shared class Mop extends spock.lang.Specification...@6c68765> at com.funtest.spock.Mop.测试动态添加获取属性(Mop.groovy:60) INFO-> Test worker 测试类[com.funtest.spock.Mop...[name: FunTester, tt: FunTester, #0] PASSED Mop > 测试动态添加获取属性 > com.funtest.spock.Mop.测试动态添加获取属性 [name
★spock是一款全能型的单元测试框架。 ” 上次文章分享了spock框架的基础功能的使用,在此基础上,我根据自己写的Groovy的封装方法、数据驱动以及一些Groovy的高级语法做了一些尝试。...分享代码,供各位参考: 1package com.FunTester.spock.pratice 2 3import com.fun.config.PropertyUtils 4import...com.fun.frame.SourceCode 5import org.slf4j.Logger 6import spock.lang.Shared 7import spock.lang.Specification...static def getAll() { 154 i 155 } 156 157 } 158 159} 下次我会针对自己写的工具类和封装的请求对象进行一些spock
Spock(Spock官网:http://spockframework.org/)作为java和Groovy测试一种表达的规范语言,其参考了Junit、Groovy、jMock、Scala等众多语言的优点...本文以实战的方式详解怎样使用Spock进行单元测试,以便更好地理解Spock单元测试,至少能够让读者能够在选择java单元测试面前多了一种选择。 1....; import com.lance.spock.demo.api.BizService; import com.lance.spock.demo.dao.Dao; import com.lance.spock.demo.entity.PersonEntity...import com.lance.spock.demo.dao.Dao import com.lance.spock.demo.entity.PersonEntity import com.lance.spock.demo.service.impl.BizServiceImpl...使用Spock框架进行单元测试; 2. Spock官网.
Spock通过@RunWith注解与JUnit框架协同使用,另外,Spock也可以和Mockito(Spring Boot应用的测试——Mockito)协同使用。...在这个小节中我们会利用Spock、Mockito一起编写一些测试用例(包括对Controller的测试和对Repository的测试),感受下Spock的使用。...在pom文件中添加Spock框架的依赖 <!...分析 可以看出,通过Spock框架可以写出优雅而强大的测试代码。...Note:关于Spock的文档见这里:Spock Framework Reference Documentation 根据《单元测试的艺术》一书中提到的,单元测试包括:准备测试数据、执行待测试方法、
spock2进行了较大的升级,基于Junit5,基于Groovy3(Groovy3要求JDK9+) 重要说明:不建议将您的现实项目迁移到Spock 2.0 M1!...这非常方便,因为应该在支持JUnit平台的任何地方(IDE,构建工具,质量保障工具等)自动识别并执行Spock测试。另外,平台本身提供的功能也应该也适用于Spock。...要将Spock 2引入Gradle项目,需要修改Spock版本: testImplementation('org.spockframework:spock-core:2.0-M1-groovy-2.5'...但是,那太好了,目前还没有办法 “滚动”特定的测试,如Spock 1.x的spock-global-unroll所知。...但是,为了使迁移更容易(@TemporaryFolder可能在基于Spock的集成测试中经常使用),有一个专用工具spock-junit4可以在内部将JUnit 4规则包装到Spock扩展中,并在Spock
领取专属 10元无门槛券
手把手带您无忧上云