spock测试_将Spock 1.3测试迁移到Spock 2.0

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测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/331859.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql与jmeter环境变量配置_Java开发技术大杂烩(一)之Redis、Jmeter、MySQL的那些事...

前言毕业答辩告一段落&#xff0c;接下来好好努力工作。Redis遇到的一些问题DENIED Redis is running in protected mode because protected mode is enabled, no bind address was specified, no authentication password is requested to clients. In this mode connections …

DFS应用——寻找欧拉回路

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c; 源代码均为原创&#xff0c; 旨在 理解 “DFS应用——寻找欧拉回路” 的idea 并用源代码加以实现 &#xff08;源代码&#xff0c;我还没有找到一种有效的数据结构和DFS进行结合&#xff0c;往后会po出…

wiremock 使用_使用WireMock进行更好的集成测试

wiremock 使用无论您是遵循传统的测试金字塔还是采用诸如“ 测试蜂窝”这样的较新方法&#xff0c;都应该在开发过程中的某个时候开始编写集成测试。 您可以编写多种类型的集成测试。 从持久性测试开始&#xff0c;您可以检查组件之间的交互&#xff0c;也可以模拟调用外部服务…

mysql备份七牛云存储_定时备份 Mysql并上传到七牛的方法

多数应用场景下&#xff0c;我们需要对重要数据进行备份、并放置到一个安全的地方&#xff0c;以备不时之需。常见的 MySQL 数据备份方式有&#xff0c;直接打包复制对应的数据库或表文件(物理备份)、mysqldump 全量逻辑备份、xtrabackup 增量逻辑备份等。常见的数据存储方式有…

jetty java_Jetty,Java和OAuth入门

jetty java使用Okta的身份管理平台轻松部署您的应用程序 使用Okta的API在几分钟之内即可对任何应用程序中的用户进行身份验证&#xff0c;管理和保护。 今天尝试Okta。 Jetty是一个小型&#xff0c;高度可扩展的基于Java的Web服务器和servlet引擎。 它支持HTTP / 2&#xff0c…

DFS应用——查找强分支

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c; 源代码均为原创&#xff0c; 旨在 理解 “DFS应用——查找强分支” 的idea 并用源代码加以实现 &#xff1b; 【1】查找强分支 1.1&#xff09;如何检测一个图是否是强连通的&#xff1a; 通过执行两…

python中的super用法详解_Python中super函数用法实例分析

本文实例讲述了python中super函数用法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;这是个高大上的函数,在python装13手册里面介绍过多使用可显得自己是高手 23333. 但其实他还是很重要的. 简单说, super函数是调用下一个父类(超类)并返回该父类实例的方法. 这里的下…

java 管理多个进程_管理多个Java安装

java 管理多个进程随着越来越多的Java版本发布&#xff0c;在本地环境中管理多个Java安装将变得更加有趣。 不同的项目可能需要不同的Java版本。 jenv项目是管理Java安装的便捷方法。 它可以在全局&#xff0c;目录和外壳程序级别上设置本地Java安装&#xff0c;并使用易于记忆…

NP-完全性介绍

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c; 旨在 理解 “NP-完全性” 的idea &#xff1b; 【1】难与易 1.1&#xff09;不可判定问题&#xff1a;正如实数不足以表示 x^2 < 0 的解那样&#xff0c;可以证明&#xff0c; 计算机不可能解决碰…

python发邮件给多个人发送消息_python发送邮件(带附件)、发送给多人、抄送给多人的示例...

python发送邮件(带附件)、发送给多人、抄送给多人的示例#!/usr/bin/env python# -*-encoding: utf-8 -*-import smtplibfrom email.mime.multipart import MIMEMultipartfrom email.mime.text import MIMEText#image包可以发送图片形式的附件# from email.mime.image import MI…

camel apache_Apache Camel 3只有2个月的路程

camel apache骆驼队正忙于为 Apache Camel 3.今天&#xff0c;第二个候选版本已构建并发布在暂存库中&#xff0c;供早期的适配器尝试 。 当我自己很忙的时候&#xff0c;我只想写一篇简短的博客文章&#xff0c;以使社区了解Apache Camel 3即将发布&#xff0c;并且我们希望…

浅谈java代理

【0】README 0.1&#xff09; 本文描述源代码均 转自 core java volume 1&#xff0c; 旨在理解 java代理机制 的基础知识&#xff1b; 【1】代理相关 1.1&#xff09;利用代理可以在运行时创建一个实现了一组给定接口的新类&#xff0c; 这种功能只有在 编译时无法确定需要实…

织梦mysql安装教程视频教程_织梦DedeCMSV6系统安装步骤教程

DedeCMSV6系统基于PHP7.*MySQL开发&#xff0c;本篇文档将介绍如何下载DedeCMSV6系统&#xff0c;并且通过之前已经部署好的系统环境来安装配置一个安全的站点。准备工作&#xff1a;主机一台(PHP7.0以上MYSQL)域名(做好解析绑定工作)源码下载通过DedeCMSV6系统下载页面可以获取…

无法创建t的通用数组_创建通用数组的问题

无法创建t的通用数组在这篇文章中&#xff0c;我们将介绍一篇全面的文章&#xff0c;其中介绍了创建通用数组的问题。 Java编程语言于2004年9月在Java 5.0“ Tiger”发行版中添加了泛型。 泛型或类型参数化系统在提供类型安全性的同时扩展了Java现有的类型系统。 1.简介 Java具…

贪婪算法+小应用(调度问题)

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c; 旨在 理解 “DFS应用——贪婪算法” 的idea&#xff1b; 【1】贪婪算法 1.1&#xff09;已经看到的三个贪婪算法&#xff1a; Dijkstra算、Prim算法 和 Kruskal 算法&#xff1b;&#xff08;Dijkstr…

http 安全性和幂等性_HTTP方法:幂等性和安全性

http 安全性和幂等性幂等性和安全性是HTTP方法的属性。 HTTP RFC定义了这些属性&#xff0c;并告诉我们哪些HTTP方法是安全且幂等的。 服务器应用程序应确保正确执行安全和幂等的语义&#xff0c;如客户端期望的那样。 安全的HTTP方法 如果HTTP方法不更改服务器状态&#xff0…

Huffman编码(Huffman树)

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c; 源代码均为原创&#xff0c; 旨在 理解 “Huffman编码&#xff08;Huffman树&#xff09;” 的idea 并用源代码加以实现&#xff1b; 0.2&#xff09; Huffman树的构建算法属于 贪婪算法&#xff0c;…

java获取文件列表_java获取指定目录中的文件列表

最近项目中会动态生成文件html及相关资源文件(css,js,png,mp3)&#xff0c;为了防止文件名重复&#xff0c;需要获取目录中相同类型文件的最大编号&#xff0c;下面我用代码来实现获得文件列表。public static void getFiles(String path) {File file new File(path);// 如果这…

jep290涉及jdk版本_针对JDK 14提议的另外六个JEP

jep290涉及jdk版本Mark Reinhold最近的消息宣布了六个新的“建议针对JDK 14的JEP ”&#xff1a; JEP 345 &#xff0c; JEP 361 &#xff0c; JEP 363 &#xff0c; JEP 364 &#xff0c; JEP 365和JEP 367 。 假设没有异议由11月7日提出&#xff0c;这些JEPs将有针对性地JDK …

近似装箱问题(三种联机算法实现)

【0】README 0.1&#xff09; 本文总结于 数据结构与算法分析&#xff0c; 源代码均为原创&#xff0c; 旨在 理解 “近似装箱问题&#xff08;三种联机算法实现&#xff09;” 的idea 并用源代码加以实现&#xff1b; 0.2&#xff09; 近似装箱问题的三种联机算法 分别是&am…