Groovy单元测试框架spock数据驱动Demo
spock是一款全能型的单元测试框架。
上次文章分享了spock框架的基础功能的使用,在此基础上,我根据自己写的Groovy的封装方法、数据驱动以及一些Groovy的高级语法做了一些尝试。发现还是有一点点问题,不知道是不是因为我本身是Java和Groovy混编的项目导致的,不过也都有了解决方案。
分享代码,供各位参考:
package com.FunTester.spock.pratice
import com.fun.config.PropertyUtils
import com.fun.frame.SourceCode
import org.slf4j.Logger
import spock.lang.Shared
import spock.lang.Specification
import static com.fun.config.Constant.EMPTY
import static com.fun.config.Constant.getLongFile
import static com.fun.frame.Output.output
import static com.fun.frame.SourceCode.*
class Test02 extends Specification {
@Shared
def properties = PropertyUtils.getLocalProperties(getLongFile("1"))
@Shared
def cc = Arrays.asList(properties.getArrays("c")).stream().map {x -> Integer.valueOf(x)}.collect() as List
@Shared
def bb = Arrays.asList(properties.getArrays("b")).stream().map {x -> Integer.valueOf(x)}.collect() as List
@Shared
def aa = Arrays.asList(properties.getArrays("a")).stream().map {x -> Integer.valueOf(x)}.collect() as List
@Shared
Logger logger = getLogger(Test02.class.getName())
def setup() {
logger.info("测试方法开始了")
}
def cleanup() {
logger.info("测试方法结束了")
}
def setupSpec() {
logger.info("测试类[${getClass().getName()}]开始了")
}
def cleanupSpec() {
logger.info("测试类[${getClass().getName()}]结束了")
}
def "测试数据驱动Demo"() {
given:
int c = 0
expect:
10 == a + b + c
where:
a | b
1 | 9
8 | 2
}
def "测试数据读写完成数据驱动"() {
given:
def a = 0
def arrays = properties.getArrays("id")
def s1 = properties.getPropertyInt("size1")
def s2 = properties.getPropertyInt("size2")
def list = Arrays.asList(arrays).stream().filter {x -> x.length() > 1}.collect() as List
expect:
s1 == arrays.size()
s2 == list.size()
}
def "测试自定义对象操作"() {
given: "给一个自定义对象"
def per = new Per()
per.age = 23
per.name = "FunTester"
def a = per
expect:
a.name == "FunTester"
}
def "线程安全测试"() {
given: "多线程支持测试,此处线程数改成很大之后效果比较明显"
range(2).forEach {new Per().start()}
sleep(1000)
output(Per.i)
expect:
4 == Per.i
}
def "测试集合验证使用数据驱动"() {
given: "此处写的无法被where使用"
expect:
c * c == a * a + b * b
where:
c << cc
b << bb
a << aa
}
def "测试数组0..10方式是否可用"() {
expect:
true == SourceCode.isNumber(x + EMPTY)
where: "需要用括号,不然会报错"
x << (0..5)
}
def "测试lambda写法是否可用"() {
given:
def collect = range(10).filter {x -> x % 2 == 1}.collect() as List
expect:
collect.size() == 5
collect.contains(3)
collect.contains(5)
}
/**
* 测试类
*/
class Per extends Thread {
static int i
@Override
public void run() {
i++
sleep(100)
i++
}
Per() {
}
Per(String name, int age) {
this()
this.name = name
this.age = age
}
String name
int age
static def getAll() {
i
}
}
}
下次我会针对自己写的工具类和封装的请求对象进行一些spock方面的代码演示,欢迎各位关注。
技术类文章精选
- java一行代码打印心形
- Linux性能监控软件netdata中文汉化版
- 接口测试代码覆盖率(jacoco)方案分享
- 性能测试框架
- 如何在Linux命令行界面愉快进行性能测试
- 图解HTTP脑图
- 将swagger文档自动变成测试代码
- 五行代码构建静态博客
- 基于java的直线型接口测试框架初探
- JUnit中用于Selenium测试的中实践
非技术文章精选
- 为什么选择软件测试作为职业道路?
- 写给所有人的编程思维
- 成为优秀自动化测试工程师的7个步骤
- 手动测试存在的重要原因
- 成为自动化测试的7种技能
- 自动化和手动测试,保持平衡!
- 自动化测试生命周期
- 如何在DevOps引入自动化测试
Groovy单元测试框架spock数据驱动Demo的更多相关文章
- Groovy单元测试框架spock基础功能Demo
spock是一款全能型的单元测试框架. 最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock.由于本身使用Groovy的原因,比较钟 ...
- Maven和Gradle中配置单元测试框架Spock
Maven Maven本身不支持其他JVM语言(例如Groovy或Scala).要在Maven项目中使用它,需要使用第三方插件.对于Groovy而言,最好的选择似乎是GMavenPlus(重写不再维护 ...
- TestNg JAVA 自动化单元测试框架Demo
TestNg TestNg 是java的一个自动化单元测试框架 参考:http://testng.org/doc/index.html 环境准备 既然是java 的自动化单元测试框架,就必须要有jav ...
- Python Unittest 自动化单元测试框架Demo
python 测试框架(本文只涉及 PyUnit) https://wiki.python.org/moin/PythonTestingToolsTaxonomy 环境准备 首先确定已经安装有Pyth ...
- Java单元测试框架 JUnit
Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一 ...
- JavaScript单元测试框架-Jasmine
Jasmine的开发团队来自PivotalLabs,他们一开始开发的JavaScript测试框架是JsUnit,来源于著名的JAVA测试框架JUnit.JsUnit是xUnit的JavaScript实 ...
- unittest单元测试框架实现参数化
当我们在使用TestNG时,发现它有一个非常好用的参数化功能.当你的测试用例有固定的参数和断言结果时,它可以相似用例的节省用例的个数. 例子如下: import static org.testng.A ...
- 简单易懂的单元测试框架-gtest(一)
简介 gtest是google开源的一个单元测试框架,以其简单易学的特点被广泛使用.该框架以第三方库的方式插入被测代码中.同其他单元测试框架相似,gtest也通过制作测试样例来进行代码测试.同 ...
- python之使用单元测试框架unittest执行自动化测试
Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 单元测试框架即一堆工具的集合. 在说unittest ...
随机推荐
- postman全局变量设置
1.点击小齿轮进入到变量添加页面,点击Globals添加全局变量 2.输入变量名称和变量值 3.接口中设置变量
- 使用Xming显示Oracle Linux图形界面
如果你在尝试各种官方说明文档中的方法之后,xclock仍然无法远程显示. 系统 Win10 - Oracle Linux 7.5 Xming的文档以及网上教程都说的是Xming相关的配置 但是,要显示 ...
- JDBC-第1篇-基础
话不多说,直接开撸代码. 1.首先自己的环境使用的是maven项目+idea工具+mysql8.0.18 (使用maven项目的好处就是方便,不用手动导入相关的驱动包,在pom.xml配置即可) 2. ...
- Cocos2d-x 学习笔记(9) Action 运行原理
1. 从一个Action开始 1.1 创建 在Scene里写一个Sprite,并添加Action: Sprite *sp = Sprite::create("m1.png"); M ...
- Spring容器启动源码解析
1. 前言 最近搭建的工程都是基于SpringBoot,简化配置的感觉真爽.但有个以前的项目还是用SpringMvc写的,看到满满的配置xml文件,却有一种想去深入了解的冲动.折腾了好几天,决心去写这 ...
- 浅谈K-means聚类算法
K-means算法的起源 1967年,James MacQueen在他的论文<用于多变量观测分类和分析的一些方法>中首次提出 “K-means”这一术语.1957年,贝尔实验室也将标准算法 ...
- 解决Zend OPcache huge_code_pages: mmap(HUGETLB) failed: Cannot allocate memory报错
前几日看到鸟哥介绍的 <让你的PHP7更快之Hugepage>, 于是想试试手给服务器加上,参照格式安装好扩展,调整好配置文件,然后重启php-fpm,结果启动一直报Zend OPcach ...
- Dotween 应用
dotween是做缓动比较简单实用的插件,下面就使用经验进行浅谈 1)通用方法:如下图官网截图所示,如果看不懂可以跳过,这是一个通用方法,前两个参数为委托类型,可以用lambda表达式,也可以直接写成 ...
- spring源码学习(二)
本篇文章,来介绍finishBeanFactoryInitialization(beanFactory);这个方法:这个方法主要是完成bean的实例化,invokeBeanFactoryPostPro ...
- linux文本编辑器教学
linux常见服务 一. 文本编辑器 vi vim是vi增强版 vim需要安装 sudo apt-get -y install vim 1 vim的三种工作模式 1 编辑模式 命令模式=>编辑模 ...