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方面的代码演示,欢迎各位关注。

技术类文章精选

非技术文章精选

Groovy单元测试框架spock数据驱动Demo的更多相关文章

  1. Groovy单元测试框架spock基础功能Demo

    spock是一款全能型的单元测试框架. 最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock.由于本身使用Groovy的原因,比较钟 ...

  2. Maven和Gradle中配置单元测试框架Spock

    Maven Maven本身不支持其他JVM语言(例如Groovy或Scala).要在Maven项目中使用它,需要使用第三方插件.对于Groovy而言,最好的选择似乎是GMavenPlus(重写不再维护 ...

  3. TestNg JAVA 自动化单元测试框架Demo

    TestNg TestNg 是java的一个自动化单元测试框架 参考:http://testng.org/doc/index.html 环境准备 既然是java 的自动化单元测试框架,就必须要有jav ...

  4. Python Unittest 自动化单元测试框架Demo

    python 测试框架(本文只涉及 PyUnit) https://wiki.python.org/moin/PythonTestingToolsTaxonomy 环境准备 首先确定已经安装有Pyth ...

  5. Java单元测试框架 JUnit

    Java单元测试框架 JUnit JUnit是一个Java语言的单元测试框架.它由Kent Beck和Erich Gamma建立,逐渐成为源于KentBeck的sUnit的xUnit家族中为最成功的一 ...

  6. JavaScript单元测试框架-Jasmine

    Jasmine的开发团队来自PivotalLabs,他们一开始开发的JavaScript测试框架是JsUnit,来源于著名的JAVA测试框架JUnit.JsUnit是xUnit的JavaScript实 ...

  7. unittest单元测试框架实现参数化

    当我们在使用TestNG时,发现它有一个非常好用的参数化功能.当你的测试用例有固定的参数和断言结果时,它可以相似用例的节省用例的个数. 例子如下: import static org.testng.A ...

  8. 简单易懂的单元测试框架-gtest(一)

    简介     gtest是google开源的一个单元测试框架,以其简单易学的特点被广泛使用.该框架以第三方库的方式插入被测代码中.同其他单元测试框架相似,gtest也通过制作测试样例来进行代码测试.同 ...

  9. python之使用单元测试框架unittest执行自动化测试

    Python中有一个自带的单元测试框架是unittest模块,用它来做单元测试,它里面封装好了一些校验返回的结果方法和一些用例执行前的初始化操作. 单元测试框架即一堆工具的集合. 在说unittest ...

随机推荐

  1. 《Java编程思想》——初始化与清理(一)读书笔记

    第一次写这个,这一章都用word写的,结果复制过来没图片....只能上传word文档了.以后改用markdown比较好 word文档地址:<Java编程思想>--初始化与清理(一)读书笔记

  2. java web项目下的lib和build path 中jar包问题解惑

    一.build path&WEB-INFO/lib介绍 build path:可以说是引用: WEB-INFO/lib:可以说是固定在一个地方: eclipse编译项目的时候是根据build ...

  3. springboot security+redis+jwt+验证码 登录验证

    概述 基于jwt的token认证方案 验证码 框架的搭建,可以自己根据网上搭建,或者看我博客springboot相关的博客,这边就不做介绍了.验证码生成可以利用Java第三方组件,引入 <dep ...

  4. spring boot打印sql语句-mybatis

    spring boot打印sql语句-mybatis 概述 当自己编写的程序出现了BUG等等,找了很久 调试运行了几遍到mapper层也进去调试进了源码,非常麻烦 我就想打印出sql语句,好进行解决B ...

  5. 使用 statcounter 统计 Hexo 博客访问量

    介绍 statcounter是一个提供网站访问统计服务的网站: StatCounter is a simple but powerful real-time web analytics service ...

  6. CSS 阴影动画优化技巧一则

    本技巧来自这篇文章 -- How to animate box-shadow with silky smooth performance 本文不是直译,因为觉得这个技巧很有意思很有用,遂起一文. bo ...

  7. Mybatis总结之如何自动生成数据库表结构

    一般情况下,用Mybatis的时候是先设计表结构再进行实体类以及映射文件编写的,特别是用代码生成器的时候. 但有时候不想用代码生成器,也不想定义表结构,那怎么办? 这个时候就会想到Hibernate, ...

  8. vue render

    Vue 的 render 渲染 API vue2 的 vnode tag: 当前节点的标签名 data: 当前节点是数据对象 children: 子节点,数组也是vnode 类型 text: 当前节点 ...

  9. requests+lxml+xpath爬取电影天堂

    1.导入相应的包 import requests from lxml import etree 2.原始ur url="https://www.dytt8.net/html/gndy/dyz ...

  10. R语言:绘制知识图谱

    知识图谱主要是通过将应用数学,图形学,信息可视化技术,信息科学等学科的理论与方法与计量学引文分析.共现分析等方法结合,利用可视化的图谱形象地展示学科的核心结构.发展历史.前沿领域以及整体知识架构达到多 ...