Java项目中使用groovy简化测试 、 java项目测试框架spock的使用教程 简介 Spock 框架是一个基于groovy语法的测试框架,由于使用groovy,所以使用起来比 junit 更加灵活...如果使用过junit,spock的则很容易上手,可以类比来学习。...使用 下面直接使用实例来介绍spock的用法: 1.加入依赖 org.spockframework.../之后运行一次; @BeforeClass/@AfterClass :标记的方法会在测试类初始化时/销毁时运行; spock 没有使用以上的注解形式,而是测试类需要继承 Specification 父类...: package com.yawn.spock import spock.lang.Shared import spock.lang.Specification /** * spock 测试
测试同学们平时用的比较多的测试框架和工具,如JMockit、EasyMock、Mockito和PowerMock,大家普遍认为代码可读性差,多组测试数据使用起来麻烦等缺点,今天小编就来给大家介绍一款简洁...、优雅、易理解的测试框架——Spock 首先给大家简单介绍下这款测试框架,Spock是一个基于Java和Groovy应用的测试框架,通过JUnit runner调用测试,兼容绝大部分JUnit的运行场景...(IDE,构建工具,持续集成等),Spock框架使用标签分隔单元测试中不同的代码,更加规范,也符合实际写单元测试的思路,它的底层基于JUnit,不需要额外的运行框架,由于使用Groovy语言,所以也可以享受到脚本语言带来的便利...Groovy是JVM的一个替代语言(替代是指可以用 Groovy 在Java平台上进行 Java 编程),使用方式基本与使用 Java代码的方式相同,该语言特别适合与Spring的动态语言支持一起使用,...三.Spock中的许多概念和特征都来自jUnit,我们总结看下Spock测试模板方法的定义和JUnit的对比,后续我们会对各个模板方法进行介绍和测试实践,请大家持续关注搜狗测试公众号。 ?
使用场景 when: int a = 12; int b = xxxService.squre(a); int c = xxxService.plus(a, b); then: c == 100 假如我们需要测试以上代码...,但被告知squre方法目前还没开发完成,或者正在修改中,现在使用无法得到正确的结果。...使用实例 package com.yawn.spock import com.yawn.spock.service.CalculateInterface import com.yawn.spock.service.CalculateService...= calculateService.plusPlus(2) then: x == 1 y == 2 z == 3 } } 使用...本文转载自:jvm123-java技术分享站 原文链接:http://jvm123.com/2019/08/spock-ce-shi-zhuang/
在上一次Spock实践中我们介绍了Spock的数据驱动和一些技巧,今天我们用Spock做一些测试实践。 一、文档化测试实践 可读性是可维护性的基础,好的测试,业务人员也能看懂,适合敏捷开发模式。...举例: 这是一个演示测试: 作为测试工程师,我需要明确测试需求,以便设计测试用例 Features: 验证1为偶数 验证2为偶数 验证3为偶数 验证4为偶数...用Spock框架来实现,如下: ? 最佳实践,通过插件自动生成结构化用例: ? 二、http接口测试实践 ? ? ? ?
在上一次Spock实践中我们介绍了Spock的基本概念,今天我们继续介Spock的数据驱动和一些技巧。...一、首先介绍下spock中的数据驱动: Spock框架支持多种数据驱动方式 1.数据表,强于可读性,适合数据量小的场景 2.数据管道,强于可维护性,适合数据量多的场景 步骤:...在实际测试工作中,往往测试数量较大,此时最佳实践方式是从数据库读取数据作为驱动数据,例如: ?...二、技巧 1.对象构建技巧 在测试过程中,需要构建测试数据对象,对于比较复杂属性的对象构造,用java往往比较繁琐笨重,需要不断调用setter方法设置属性值,但是groovy语法可以基于map的构造器构造对象...通过groovy的object.with结构可以分组对象参数,例如 def "冒烟测试"() { given:"discount coupon param" def stairList
在上一次Spock实践中我们介绍了Spock的文档化测试和HTTP接口测试实践,今天我们用Spock做一些mock的实践。...各类mock框架让这类验证变得可行,而spock除了支持这类验证,并且做的更加优雅,下面我们看一下在Spock里mock的应用实践。...如果要每次调用返回不同结果,可以使用: subscriber.receive(_) >>> [ "ok" , "error" , "error" , "ok" ] 如果要做额外的操作,如抛出异常,可以使用...四、其它类型的mock对象 Spock也支持spy、stub之类的mock对象,但是并不推荐使用,因为使用“正规的”BDD思路写出的代码不需要用这些方法来测试,官方的解释是: Think twice...(在使用此功能之前请三思。在规范下更改代码的设计可能会更好。) 具体的使用方法如果有兴趣可以参考官方文档.
Spock相比JUnit有易读、简洁、自带Mock等特性,可以减少单元测试编写时间,而且bug更少,可读性更好。...虽然使用的Groovy语法,但是基本兼容Java语法,使用起来没有门槛,好东西就要分享!...Spock的特性 代码易读 易读的测试用例名字,可以使用任意字符串,比如下面中test stack 易理解的代码模块:given, when, then, expect def "test stack...and: "seed the customer table" // code goes here and: "seed the product table" // code goes here 如何开始使用...:没有配置插件gmavenplus-plugin 参考 Spock Framework Reference Documentation Spock 一个优雅的Groovy/Java测试框架 Spock
在上一次Spock实践中我们介绍了Spock的数据驱动和一些技巧,今天我们继续介Spock的一些实用技巧。 1.循环执行 ? 2、脚本断言 好的测试脚本,离不开科学合理的断言 ?...3、异常测试 我们的程序,有正常流程,有分支流程,有异常流程,那么怎么做异常测试呢? ?
Spock(Spock官网:http://spockframework.org/)作为java和Groovy测试一种表达的规范语言,其参考了Junit、Groovy、jMock、Scala等众多语言的优点...Spock单元测试相对于传统的junit、JMockito、EsayMock、Mockito、PowerMock,由于使用了Groovy作为语法规则,代码量少,容易上手,提高了单元测试开发的效率,因此号称是下一代单元测试框架...本文以实战的方式详解怎样使用Spock进行单元测试,以便更好地理解Spock单元测试,至少能够让读者能够在选择java单元测试面前多了一种选择。 1....和Junit类似也将单元测试划分成了多个阶段 * 如 setup() 类似于Junit的@Before,在这个方法中的代码块会在测试用例执行之前执行,一般用于初始化程序以及Mock定义...使用Spock框架进行单元测试; 2. Spock官网.
在上一次Spock实践中我们介绍了Spock的优点和Demo的搭建,今天我们继续介绍一些Spock常用的实践。...在使用Spock框架编写测试时,测试类需要继承自Specification类。...When and Then Blocks when与then需要搭配使用,在when中执行待测试的函数,在then中判断是否符合预期。 ?...如果要验证有没有跑出异常,可以使用thrown ? 5.2.2 断言 要获取抛出的异常对象,可以用以下语法: ? 如果要验证没有抛出某种异常,可以用notThrown(): ?...除此之外,where block还有两种数据定义的方法,并且可以结合使用。 ?
在使用spock进行单元测试时,有如下情景,分别可使用stub和mock。 使用stub测试桩 如果我们需要测试A方法,但是E方法目前还没办法调用,或者还没开发完成。...以上是spock中stub测试桩的使用场景,总结为一句就是: stub测试桩给被调用者( 方法/模块)制造假的返回值,以便不影响调用者的测试。...使用mock测试桩 mock测试桩就是模拟一个测试的结果。如下图,A类调用类B和C类的某个方法: ?...如果要测试A的方法,但是我们没办法调用B来检测结果,就可以使用mock测试桩,生成一个B的mock对象。检验结果时,可以使用B的mock对象替代B。...-2.html 以上是spock中mock测试桩的使用场景,总结为一句就是: mock测试桩给被测试方法模拟一个预期的效果。
先介绍一下两位主角 spock是一款基于Groovy语言的单元测试框架,其基础也是Java的Junit,目前最新版已经到了2.0,但对Groovy和响应的Java版本要求较高,具体信息参考:Spock...Mockito是一个模拟测试框架,可以让你用优雅,简洁的接口写出漂亮的单元测试。Mockito可以让单元测试易于可读,产生简洁的校验错误。TDD测试驱动开发要求我们先写单元测试,再写实现代码。...testCompile 'org.mockito:mockito-core:2.7.22' testCompile group: 'org.spockframework', name: 'spock-core...,Mockito的基础功能在spock应用还是非常流畅的,但是一些高级语法还是无法使用,如果在实际项目中使用请多调研两者差别,大概率还是要混合编程。...参考文章: Maven和Gradle中配置单元测试框架Spock Groovy单元测试框架spock基础功能Demo Groovy单元测试框架spock数据驱动Demo ---- 郑重声明:“FunTester
★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...sleep(1000) 89 output(Per.i) 90 expect: 91 4 == Per.i 92 } 93 94 def "测试集合验证使用数据驱动..."() { 95 given: "此处写的无法被where使用" 96 97 expect: 98 c * c == a * a + b * b 99
spock是一款全能型的单元测试框架。 最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock。...由于本身使用Groovy的原因,比较钟情于spock框架,但是奈何兼容性比较差,特别是跟Mockito等框架的高级语法的兼容。...不过这不妨碍spock是一个非常优秀的单元测试框架,特别体现在用例的形式和测试报告的展示方式以及报错信息的展示(这个我最中意)。 在简单看过官方文档之后做了一些简单的Demo,分享给大家。...(官方文档貌似有段时间没有更新了,如果用的话建议升级最新版) package com.FunTester.spock.pratice import org.slf4j.Loggerimport spock.lang.Sharedimport...的测试报告: ?
在spring环境中使用spock,也就是要自动注入被测试的实例,不需要我们手动初始化实例。...这样也就是先启动spring容器,再运行我们的测试用例,在springboot中,很容易做到这一点,甚至比junit还简单。...如下: package com.yawn.spock import com.yawn.spock.service.CalculateService import org.springframework.beans.factory.annotation.Autowired...@SpringBootTest,即可在运行这个测试类之前启动spring容器,运行完这个类所有的测试用例之后,容器会自动运行结束。...这三篇文章所有的完整测试代码都在我的gitee: https://gitee.com/yawensilence/demo-spock 。
在使用spock测试框架时,常常会有如下的测试代码出现: // 测试方法 def "test plus 1"() { given: "准备数据" def...其实,在spock框架中,使用到一些groovy特有的语法格式,这些语法在Java中并不常见,具体如下: Labeled statements 标签语句 Any statement can be associated...但是在使用groovy语言的spock测试框架中,这种语法很流行,因为它确实让测试代码更加简单明了。...例如,下面spock框架具体测试用例和答应出的结果: ?...这并不是groovy的语法,而是spock框架支持的,这种写法更能体现数据驱动测试的思想,让测试者更加专注于测试用例本身。
要在Maven项目中使用它,需要使用第三方插件。对于Groovy而言,最好的选择似乎是GMavenPlus(重写不再维护的GMaven插件)。...另一种选择是允许使用Groovy-Eclipse编译器和Maven 的插件,但是它没有使用官方的插件,groovyc并且在过去,使用Groovy 的新发行版/功能存在一些问题。...编写测试,因此建议使用Spec附加后缀(从规范中命名)来命名文件,因此需要告诉Surefire 在这些文件中也查找测试: maven-surefire-plugin...Spock版本非常重要。...但是,如果您在GMavenPlus(和XML)的帮助下更喜欢Apache Maven,也可以构建使用Spock测试的项目。 ? Maven & Gradle
Spock框架是基于Groovy语言的测试框架,Groovy与Java具备良好的互操作性,因此可以在Spring Boot项目中使用该框架写优雅、高效以及DSL化的测试用例。...Spock通过@RunWith注解与JUnit框架协同使用,另外,Spock也可以和Mockito(Spring Boot应用的测试——Mockito)协同使用。...在这个小节中我们会利用Spock、Mockito一起编写一些测试用例(包括对Controller的测试和对Repository的测试),感受下Spock的使用。...,测试通过 接下来试验下Spock如何与mock对象一起工作,之前的文章中我们已经在TestMockBeansConfig类中定义了PublisherRepository的Spring Bean,如下所示...Spock也提供了setup()和cleanup()方法,执行一些给所有测试用例使用的准备和清除动作,例如在这个例子中我们使用setup方法:(1)mock出web运行环境,可以接受http请求;(2)
使用Spock解决单元测试开发中的痛点 4. Mock模拟 5. 异常测试 6. Spock静态方法测试 7. 动态Mock静态方法 8. 覆盖率 9. DAO层测试 作者简介 1....我们可以来看接下来的场景:void方法,没有返回结果,如何写测试这段代码的逻辑是否正确? 如何确保单元测试代码是否执行到了for循环里面的语句,循环里面的打折计算又是否正确呢?...接下来我们看下Spock是如何解决的。...Spock静态方法测试 接下来,我们一起看下Spock如何扩展第三方PowerMock对静态方法进行测试。...即Spock使用where表格的方式让PowerMock具有了动态Mock的功能。接下来,我们再看一下如何对于final变量进行Mock。
领取专属 10元无门槛券
手把手带您无忧上云