Groovy单元测试框架spock基础功能Demo
spock是一款全能型的单元测试框架。
最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock。由于本身使用Groovy的原因,比较钟情于spock到家,但是奈何兼容性比较差,特别是跟Mockito等框架的高级语法的兼容。不过这不妨碍spock是一个非常优秀的单元测试框架,特别体现在用例的形式和测试报告的展示方式以及报错信息的展示(这个我最中意)。
在简单看过官方文档之后做了一些简单的Demo,分享给大家。(官方文档貌似有段时间没有更新了,如果用的话建议升级最新版)
package com.FunTester.spock.pratice
import org.slf4j.Logger
import spock.lang.Shared
import spock.lang.Specification
import static com.fun.frame.SourceCode.getLogger
class test01 extends Specification {
@Shared
int a = 10;
@Shared
Logger logger = getLogger(this.getClass().getName())
def setupSpec() {
logger.info "测试类开始! ${logger.getName()}"
}
def setup() {
logger.info "测试方法开始!"
}
def "这是一个测试"() {
given: "准备测试数据"
def s = 3
def ss = 3
expect: "验证结果"
s == ss
}
def "表达式测试,表达式左右运算符号"() {
given: "准备数据"
expect: "测试方法"
z == x + y
where: "校验结果"
x | y || z
1 | 0 || 1
2 | 1 || 3
}
def "表达式测试,表达式左右对象方法"() {
expect:
name.size() == length
where:
name | length
"Spock" | 5
"Kirk" | 4
"Scotty" | 6
"Sc3otty" | 7
}
def "表达式测试,表达式左右对象方法,数组表示测试数据"() {
expect:
name.size() == length
where:
name << ["fjdslj", "fds"]
length << [6, 3]
}
def "校验对象"() {
given:
def per = new Per("fun", 12)
expect:
with(per) {
name == "fun"
age == 12
}
}
def "when then结构测试"() {
when:
def s = plus(3, 2)
def ss = plus(3, 2)
then:
verifyAll {
s == 3
ss == 3
}
}
/**
* 测试方法
* @param i
* @param j
* @return
*/
def plus(int i, int j) {
i
}
/**
* 测试类
*/
class Per {
Per(String name, int age) {
this.name = name
this.age = age
}
String name
int age
}
}
展示一下spock的测试报告:
- 有没有惊喜!!!
技术类文章精选
- java一行代码打印心形
- Linux性能监控软件netdata中文汉化版
- 接口测试代码覆盖率(jacoco)方案分享
- 性能测试框架
- 如何在Linux命令行界面愉快进行性能测试
- 图解HTTP脑图
- 将swagger文档自动变成测试代码
- 五行代码构建静态博客
- 基于java的直线型接口测试框架初探
- JUnit中用于Selenium测试的中实践
非技术文章精选
- 为什么选择软件测试作为职业道路?
- 写给所有人的编程思维
- 成为优秀自动化测试工程师的7个步骤
- 手动测试存在的重要原因
- 成为自动化测试的7种技能
- 自动化和手动测试,保持平衡!
- 自动化测试生命周期
- 如何在DevOps引入自动化测试
大咖风采
Groovy单元测试框架spock基础功能Demo的更多相关文章
- Groovy单元测试框架spock数据驱动Demo
spock是一款全能型的单元测试框架. 上次文章分享了spock框架的基础功能的使用,在此基础上,我根据自己写的Groovy的封装方法.数据驱动以及一些Groovy的高级语法做了一些尝试.发现还是有一 ...
- Maven和Gradle中配置单元测试框架Spock
Maven Maven本身不支持其他JVM语言(例如Groovy或Scala).要在Maven项目中使用它,需要使用第三方插件.对于Groovy而言,最好的选择似乎是GMavenPlus(重写不再维护 ...
- 六、EnterpriseFrameWork框架基础功能之权限管理
回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...
- Flask框架基础功能
引言 本文简单汇总Flask框架几大基础功能,包括: 路由系统 模板 数据库 几种常用Flask库 一个简单的Flask事例 Flask是一个基于Python,依赖Jinja2模板和WSGI服务的框架 ...
- Qt高级——QTestLib单元测试框架
一.QTestLib简介 1.QTestLib简介 QTestLib是Qt提供的一种针对基于Qt编写的程序或库的单元测试框架.QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展 ...
- python中更人性化的一个单元测试框架:nose2
如果你学过 python 进行自动化测试,你一定使用过 unittest.今天我们要讲的 nose2 是一个高级版本的 unittest.他比 unittest 更容易理解,用起来也更加方便一些. 快 ...
- Python Unittest 自动化单元测试框架Demo
python 测试框架(本文只涉及 PyUnit) https://wiki.python.org/moin/PythonTestingToolsTaxonomy 环境准备 首先确定已经安装有Pyth ...
- TestNg JAVA 自动化单元测试框架Demo
TestNg TestNg 是java的一个自动化单元测试框架 参考:http://testng.org/doc/index.html 环境准备 既然是java 的自动化单元测试框架,就必须要有jav ...
- Selenium基于Python web自动化基础二 -- 免登录、等待及unittest单元测试框架
一.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...
随机推荐
- 算法学习之剑指offer(十一)
一 题目描述 请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推. import java.util.*; ...
- 使用Line Pos Info 和 Modern C++ 改进打印日志记录
使用Line Pos Info 和 Modern C++ 改进打印日志记录 使用跟踪值:不管自己是多么的精通,可能仍然使用调试的主要方法之一 printf , TRaCE, outputDebugSt ...
- Vue中组件
0828自我总结 Vue中组件 一.组件的构成 组件:由 template + css + js 三部分组成(.vue文件) 1)组件具有复用性 2) 复用组件时,数据要隔离 3) 复用组件时,方法不 ...
- Vue部分编译不生效,解决Vue渲染时候会闪一下
0828自我总结 Vue部分编译不生效,解决Vue渲染时候会闪一下 一.Vue编译不生效 在标签里添加v-pre <script src="vue.js"></s ...
- vc++中代码段的免杀
一.文件特征码定位: 一般我们先用MyCCL把被查杀文件的文件特征码定位出来,然后用C32判断定位出来的这个特征码是代码还 是字符串,或者是输入表.输出表.版权信息等…定位在不同的地方,就要用不同的方 ...
- React+Antd+Antd-Img-Crop实现上传固定大小的裁剪头像或者图片(且可控制图片数量)
见章知著 1024,程序员们节日快乐!本文主要讲述react配合antd以及react-img-crop第三方库实现一个可控的图片上传功能. 运行项目 需要具有node环境 第三方库安装 1.antd ...
- 概念理解-Libevent
可移植性: 使用 LibEvent 编写的程序应该在 LibEvent 支持跨越的所有平台上工作,即使没有更好的方法来处理. 非阻塞式IO:LibEvent也应该支持一般的方法使程序可以运行在某些限制 ...
- php分布式是什么
分布式网络存储技术是将数据分散地存储于多台独立的机器设备上.分布式网络存储系统采用可扩展的系统结构,利用多台存储服务器分担存储负荷,利用位置服务器定位存储信息,不但解决了传统集中式存储系统中单存储服务 ...
- python编程系列---Pycharm快捷键(更新中....)
以下是我常用到的Pycharm快捷键(还有很多,只是我暂时用的最多的就这些): 在开发过程中,经常使用一些快捷键会大大提高开发效率,不要因为看这多而不用,常用的就那些,用得多就都记住了,脱离鼠标,逼格 ...
- Mysql分表的一个考虑
今天看到一篇博客,讲述的是Mysql的分表方案,内容比较简单,不过有个思路倒是挺好的,记录下,后续分表可以参考 作者主要是说到两种分表,一个是取模,另一个是范围分表 取模:比如用户ID%10,分10张 ...