spock测试

了解Spock 2.0 M1(基于JUnit 5)的期望,如何在Gradle和Maven中迁移到它以及为什么报告发现的问题很重要:)。

重要说明 。 我绝对建议您永久将您的现实项目迁移到Spock 2.0 M1! 这是2.x的第一个(预)发行版,未完成API,旨在收集与内部Spock迁移到JUnit Platform有关的用户反馈。

这篇博客文章旨在鼓励您进行项目到Spock 2.0的测试迁移,查看开始失败的原因,修复它(如果由测试引起)或报告(如果它是Spock本身的回归)。 这样一来,在Spock方面,就有可能在Milestone 2之前改进代码库。除了对FOSS项目:-)做出贡献之外,您的收益将是对所需更改的意识(保持在一边) Spock 2.0更成熟后,就可以迁移了。

我计划在下一个Spock 2版本可用时更新此博客文章。


由JUnit Platform提供支持

Spock 2.0 M1的主要变化是向JUnit 5的迁移(确切地说,是使用JUnit Platform 1.5(是JUnit 5的一部分而不是JUnit 4Runner API)执行测试)。 这非常方便,因为应该在支持JUnit平台的任何地方(IDE,构建工具,质量工具等)自动识别和执行Spock测试。 另外,平台本身提供的功能(例如并行测试执行)也应该(最终)也适用于Spock。

要将Spock 2引入Gradle项目,需要修改Spock版本:

 testImplementation( 'org.spockframework:spock-core:2.0-M1-groovy-2.5' ) 

并通过JUnit平台激活测试执行:

 test { useJUnitPlatform()  } 

另一方面,对于Maven,仍然需要切换到Never Spock版本:

 < dependency > < groupId >org.spockframework</ groupId > < artifactId >spock-core</ artifactId > < version >2.0-M1-groovy-2.5</ version > < scope >test</ scope >  </ dependency > 

但这就是全部。 如果找到了junit-platform-engine(Spock 2的传递依赖项),则Surefire插件(如果使用版本3.0.0+)默认执行JUnit Platform测试。

可以从GitHub获得Gradle i Maven的最小工作项目。

其他变化

由于具有向JUnit Platform迁移的巨大变化,Spock 2.0 M1中的其他变化数量有限,从而使查找潜在的回归原因变得容易一些。 作为迁移本身的副作用,所需的Java版本是8。

此外,所有参数化测试都会(最终)自动“展开”。 但是,那太好了,如Spock 1.x的spock-global-unroll所知,当前没有办法 “滚动”特定的测试。

在发行说明中可以找到其他一些更改(例如暂时禁用的SpockReportingExtension )。

预计会有更多(可能是重大的)更改合并到里程碑2中。

JUnit 4规则问题

使用JUnit 4 @Rule (或@ClassRule )的测试可能会失败,并显示一条错误消息,提示未在测试之前创建/初始化所请求的对象(例如NullPointerExceptionIllegalStateException: the temporary folder has not yet been created ),或者之后没有被验证/清除(例如,来自AssertJ的软断言)。 JUnit平台不再支持Rules API。 但是,为了@TemporaryFolder迁移(在基于Spock的集成测试中可能经常使用@TemporaryFolder ),有一个专用的spock-junit4在内部将JUnit 4规则包装到Spock扩展中,并在Spock的生命周期中执行它。 由于它是作为全局扩展实现的,因此唯一需要添加的就是另一个依赖项。 在Gradle中:

 testImplementation 'org.spockframework:spock-junit4:2.0-M1-groovy-2.5' 

或在Maven中:

 < dependency > < groupId >org.spockframework</ groupId > < artifactId >spock-junit4</ artifactId > < version >2.0-M1-groovy-2.5</ version > < scope >test</ scope >  </ dependency > 

这使迁移更加容易,但是最好考虑切换到本地Spock副本(如果可用/可行)。

其他问题和局限性

Spock 2.0 M1仅使用Groovy 2.5.8进行编译和测试。 从M1开始,当前在运行时阻止使用Groovy 3.0执行。 不幸的是,除了关于不兼容的Groovy版本的明确错误消息外,只有一个非常神秘的错误消息:

 Could not instantiate global transform class org.spockframework.compiler.SpockTransform specified at  jar: file :/... .0-M1-groovy-2.5.jar! /spock-core-2 .0-M1-groovy-2.5.jar! /META-INF/services/org .codehaus.groovy.transform.ASTTransformation  because of exception java.lang.reflect.InvocationTargetException 

它已被报告 ,应通过M2进行增强。

令人遗憾的是,仅对Groovy 2.5的限制减少了使用Groovy 3进行实验的人们的潜在反馈,该反馈非常接近稳定版本(RC2,截至2019/2020)。 由于许多Spock测试仅适用于Groovy 3(特别是某些极端情况),因此特别不方便。 Spock 2在进入决赛之前可能会被调整为Groovy 3中的更改,或者至少会取消上述硬性限制。 同时,需要使用快照版本2.0-groovy-2.5-SNAPSHOT (已禁用该检查)测试Groovy 3支持。

摘要

阅读这篇文章后要做的动作很简单。 尝试在您的项目中临时使用Spock 2.0 M1并报告任何发现的问题,以帮助使Spock 2.0更好:)。

翻译自: https://www.javacodegeeks.com/2020/01/migrating-spock-1-3-tests-to-spock-2-0.html

spock测试

spock测试_将Spock 1.3测试迁移到Spock 2.0相关推荐

  1. 什么是端到端训练测试_为什么端到端测试对您的团队很重要

    什么是端到端训练测试 by Phong Huynh 由Phong Huynh 为什么端到端测试对您的团队很重要 (Why End-to-End Testing is Important for You ...

  2. 左右声道测试_小说:少年参加测试,直接挑战十只狗恐兽,众人见了惊呼:SS级...

    穿过那个奇怪的走廊,韩意将那个队长给他的卡交给了走廊尽头转角边上的与刚才那几个人穿着一样,十六七岁左右,一脸浓妆,身材那是该挺的挺,该翘的翘,在加上那一抹媚笑,让整个看起来有些不伦不类的女子. 原本对 ...

  3. ddr老化测试_塑胶类材料老化测试(Aging Test )常用的测试标准

    材料或者产品的老化目前已经越来越被关注,在日常生活中我们也会经常会碰到,一些涂料在户外使用过程中出现变色.起泡.粉化之类的现象:一些家电外壳如空调的白色外壳,使用一段时间会变黄,同时性能也变差,很容易 ...

  4. 随心测试_软测基础_005 测试人员工作内容

    接上篇:清楚了_测试人员的工作职责范围,那每项测试活动的具体工作内容有哪些呢? Q1:如何理解测试工程师的工作内容? A1:SX的观点:综合一体化 现如今互联网行业高速发展,每一项IT职业的工作职责与 ...

  5. a/b测试_如何进行A / B测试?

    a/b测试 The idea of A/B testing is to present different content to different variants (user groups), g ...

  6. mysql ndb 测试_.部署MYSQL集群 --测试

    最近把MYSQL集群给研究了下,并做了一个测试,且成功了!现在总结如下: 一.规划好节点 MGM:192.168.79.135 NDB1:192.168.1.79.136 NDB2:192.168.1 ...

  7. camera客观测试_光学图像测试之屏幕色彩管理测试

    作者简介:SongZi,紫光展锐高级光学测试工程师,有近十年的测试经验,负责camera影像.Display相关的测试方案落地.擅长测试方案设计.用户体验研究.数据分析与呈现等. 所谓屏幕色彩管理(简 ...

  8. 整机压力测试_加湿器防水检测仪防水测试与气密性检测是怎么做的

    加湿器是用来增加空气湿度的一种电子产品,因此需要整体密封以实现很好的防水,防水等级一般在IPX6以上(一般有IP56.IP66.IP67.IP68). 因而气密性防水检测仪是加湿器在生产制造流程中一种 ...

  9. 一秒点击屏幕次数测试_安卓App性能专项测试流畅度深度解析

    指标背景 流畅度,顾名思义是用户感知使用App页面时的流畅情况. "App卡不卡",这是用户最直接的感受. 但是要用量化之后的数据衡量流畅度,在Android平台这边并没有直接有效 ...

  10. jmeter负载测试测试_使用Apache JMeter负载测试Web应用程序

    jmeter负载测试测试 Apache JMeter是用于模拟Web应用程序上的用户负载以测试性能的出色工具. 您可以通过指定用户数量和请求间隔来轻松地构建测试计划,然后JMeter将为每个用户生成一 ...

最新文章

  1. 利用程序动态管理Web.config文件的配置
  2. 1098 Insertion or Heap Sort (25 分)【难度: 中 / 插入排序 堆排序 堆排序不会未完成】
  3. dnslog在mysql在linux_DNSLog在MySQL注入中的实战
  4. ubuntu 国内源
  5. 一文带你了解什么是GitOps
  6. 16、React Native实战之TextInput组件
  7. 圣诞海报简单设计技巧|装饰气氛PNG免抠素材
  8. 『C#基础』XML文件的读与写
  9. asp.net 通过IHttpHandler开发接口
  10. python学习---字符串
  11. 【POJ 3279】【开关问题】Fliptile【暑期 No.5】
  12. 顶级程序员收藏的数学书
  13. TA-LIB】之MACD
  14. 2023最新SSM计算机毕业设计选题大全(附源码+LW)之java小型超市货物仓储管理系统w8wry
  15. 自动化测试工程师_所以你想成为一名测试自动化工程师
  16. 使用 easyExcel 生成多个 excel 并打包成zip压缩包
  17. C语言写的学生管理系统
  18. 2023年经济危机要来了,如何度过这个难关?
  19. Linux WiFi 射频开关`rfkill`控制无线网启停与`ifconfig`显示的关系
  20. FBI指控SamSam勒索软件幕后黑手

热门文章

  1. 2017 ICPC沈阳区域赛
  2. 【无码专区8】三角形二维数点——计数有多少个给定点落在三角形区域内
  3. DP专练2 (大理石 + [ZJOI 2010]数字计数)
  4. CF1325D:Ehab the Xorcist(位运算)
  5. YBTOJ:圈套问题(分治法、鸽笼原理)
  6. P5048-[Ynoi2019 模拟赛]Yuno loves sqrt technology III【分块】
  7. jzoj3910-Idiot的间谍网络【倍增,dfs】
  8. 【FHQ treap】维护书架(金牌导航 无旋式treap-1)
  9. Problem G. Graph 2015-2016 acmicpc neerc 拓扑排序模拟
  10. 35、JAVA_WEB开发基础之过滤器