spock是一款全能型的单元测试框架。

最近在做单元测试框架的调研和尝试,目前确定的方案框架包括是:spock,Junit,Mockito以及powermock。由于本身使用Groovy的原因,比较钟情于spock到家,但是奈何兼容性比较差,特别是跟Mockito等框架的高级语法的兼容。不过这不妨碍spock是一个非常优秀的单元测试框架,特别体现在用例的形式和测试报告的展示方式以及报错信息的展示(这个我最中意)。

在简单看过官方文档之后做了一些简单的Demo,分享给大家。(官方文档貌似有段时间没有更新了,如果用的话建议升级最新版)

  1. package com.FunTester.spock.pratice
  2. import org.slf4j.Logger
  3. import spock.lang.Shared
  4. import spock.lang.Specification
  5. import static com.fun.frame.SourceCode.getLogger
  6. class test01 extends Specification {
  7. @Shared
  8. int a = 10;
  9. @Shared
  10. Logger logger = getLogger(this.getClass().getName())
  11. def setupSpec() {
  12. logger.info "测试类开始! ${logger.getName()}"
  13. }
  14. def setup() {
  15. logger.info "测试方法开始!"
  16. }
  17. def "这是一个测试"() {
  18. given: "准备测试数据"
  19. def s = 3
  20. def ss = 3
  21. expect: "验证结果"
  22. s == ss
  23. }
  24. def "表达式测试,表达式左右运算符号"() {
  25. given: "准备数据"
  26. expect: "测试方法"
  27. z == x + y
  28. where: "校验结果"
  29. x | y || z
  30. 1 | 0 || 1
  31. 2 | 1 || 3
  32. }
  33. def "表达式测试,表达式左右对象方法"() {
  34. expect:
  35. name.size() == length
  36. where:
  37. name | length
  38. "Spock" | 5
  39. "Kirk" | 4
  40. "Scotty" | 6
  41. "Sc3otty" | 7
  42. }
  43. def "表达式测试,表达式左右对象方法,数组表示测试数据"() {
  44. expect:
  45. name.size() == length
  46. where:
  47. name << ["fjdslj", "fds"]
  48. length << [6, 3]
  49. }
  50. def "校验对象"() {
  51. given:
  52. def per = new Per("fun", 12)
  53. expect:
  54. with(per) {
  55. name == "fun"
  56. age == 12
  57. }
  58. }
  59. def "when then结构测试"() {
  60. when:
  61. def s = plus(3, 2)
  62. def ss = plus(3, 2)
  63. then:
  64. verifyAll {
  65. s == 3
  66. ss == 3
  67. }
  68. }
  69. /**
  70. * 测试方法
  71. * @param i
  72. * @param j
  73. * @return
  74. */
  75. def plus(int i, int j) {
  76. i
  77. }
  78. /**
  79. * 测试类
  80. */
  81. class Per {
  82. Per(String name, int age) {
  83. this.name = name
  84. this.age = age
  85. }
  86. String name
  87. int age
  88. }
  89. }

展示一下spock的测试报告:

  • 有没有惊喜!!!

技术类文章精选

非技术文章精选

大咖风采

Groovy单元测试框架spock基础功能Demo的更多相关文章

  1. Groovy单元测试框架spock数据驱动Demo

    spock是一款全能型的单元测试框架. 上次文章分享了spock框架的基础功能的使用,在此基础上,我根据自己写的Groovy的封装方法.数据驱动以及一些Groovy的高级语法做了一些尝试.发现还是有一 ...

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

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

  3. 六、EnterpriseFrameWork框架基础功能之权限管理

    回<[开源]EnterpriseFrameWork框架系列文章索引> 从本章开始进入框架的第二块内容“EnterpriseFrameWork框架的基础功能”,包括:权限管理.字典数据管理. ...

  4. Flask框架基础功能

    引言 本文简单汇总Flask框架几大基础功能,包括: 路由系统 模板 数据库 几种常用Flask库 一个简单的Flask事例 Flask是一个基于Python,依赖Jinja2模板和WSGI服务的框架 ...

  5. Qt高级——QTestLib单元测试框架

    一.QTestLib简介 1.QTestLib简介 QTestLib是Qt提供的一种针对基于Qt编写的程序或库的单元测试框架.QTestLib提供了单元测试框架的基本功能,并提供了针对GUI测试的扩展 ...

  6. python中更人性化的一个单元测试框架:nose2

    如果你学过 python 进行自动化测试,你一定使用过 unittest.今天我们要讲的 nose2 是一个高级版本的 unittest.他比 unittest 更容易理解,用起来也更加方便一些. 快 ...

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

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

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

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

  9. Selenium基于Python web自动化基础二 -- 免登录、等待及unittest单元测试框架

    一.免登录在进行测试的过程中难免会遇到登录的情况,给测试工作添加了工作量,本文仅提供一些思路供参考解决方式:手动请求中添加cookies.火狐的profile文件记录信息实现.人工介入.万能验证码.去 ...

随机推荐

  1. [NOIp2013] luogu P1966 火柴排队

    磕了瓶魔爪. 题目描述 你有两个长度为 NNN 的数组 a,ba,ba,b,试重新排列 aaa 数组使得S=∑i=1n(ai−bi)2S=\sum_{i=1}^{n}{(a_i-b_i)^2}S=i= ...

  2. [HDU5001]Walk

    Problem Description I used to think I could be anything, but now I know that I couldn't do anything. ...

  3. ‎Cocos2d-x 学习笔记(13) ActionEase

    ActionEase是ActionInterval的子类,能够变速执行动作.把内部动作进行了包装,通过传进update的time,加上不同的计算公式,算出新的time,作为内部动作的time,实现了内 ...

  4. Java项目部署与远程调试两三事

    [开启和进行远程调试]参考https://blog.csdn.net/WSYW126/article/details/748536801.tomcat:配置catalina.sh jpda参数,主要是 ...

  5. kafka JavaAPI遇到的坑

    症状:Producer连不上,提示没有可用Node. 解决:在安装kafka的目录中配置server.properties 1.listeners=PLAINTEXT://:9092或listener ...

  6. Vue全局组件注册

    通过Vue.component(‘组件名’, {配置对象})注册全局组件 在main.js中注册全局组件 test import Vue from 'vue' import App from './A ...

  7. robotframework+ride+python3环境搭建

    一.windows下安装python3.6 1.官网下载安装包https://www.python.org/downloads/windows/ 2.进行安装,接下来步骤一直next即可 二.cmd下 ...

  8. ASP.NET Core 使用 JWT 自定义角色/策略授权需要实现的接口

    目录 ① 存储角色/用户所能访问的 API ② 实现 IAuthorizationRequirement 接口 ③ 实现 TokenValidationParameters ④ 生成 Token ⑤ ...

  9. java大数运算(讲解)

    在算法竞赛或者面试中我们经常遇到大数问题,例如求一个很大的阶层,大数加法等等. 住在这种情况下我们用常规解法(使用long long或long long int)肯定是不行的, 而我们自己用c/c++ ...

  10. 微信小程序文件压缩上传

    试用场景:上传图片过大,需进行压缩处理. 涉及微信API API 说明 文档 chooseImage 选择图片 https://developers.weixin.qq.com/miniprogram ...