将Spock 1.3测试迁移到Spock 2.0

了解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平台提供支持

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

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

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

相关文章

Word使用中常用的快捷键

1. 字体放大缩小 Ctrl ] 放大字体 Ctrl [ 缩小字体 选中文本&#xff0c;按快捷键即可看到效果。 2 对齐文本 左对齐&#xff1a;Ctrl L 右对齐&#xff1a;Ctrl R 居中对齐&#xff1a;Ctrl E 3 符号上下标 下标&#xff1a;【Ctrl】【】 上标&#xff1a;【C…

创建快捷方式时如何不带“快捷方式“后缀字样?

方法一&#xff1a; 去除“快捷方式”字样的方法&#xff1a; 创建快捷方式&#xff0c;使用上述方法比较繁琐&#xff0c;我们往往直接右击要创建快捷方式的文件或文件夹&#xff0c;然后“发送到”→“桌面快捷方式”。这样创建的&#xff0c;还会带“快捷方式”字样&#xf…

java akka_用于大型事件处理的Akka Java

java akka我们正在设计一个大型的分布式事件驱动系统&#xff0c;用于跨事务数据库的实时数据复制。 来自源系统的数据&#xff08;消息&#xff09;在到达目的地之前经历了一系列转换和路由逻辑。 这些转换是多进程和多线程的操作&#xff0c;包括可以同时执行的较小的无状态步…

xftp的简单使用

xftp的简单使用 1.下载并安装Xftp工具。打开Xftp工具&#xff0c;点击“新建”。 2.在“新建会话属性”中选择“名称”为主机命名&#xff0c;在“主机”栏输入主机IP&#xff0c;“协议”和“端口号”使用sftp和22&#xff0c;在“用户名”和“密码“栏输入账户密码。点…

与OutOfMemoryError相关的JVM参数

JVM提供了有用的参数来处理OutOfMemoryError 。 在本文中&#xff0c;我们要强调那些JVM参数。 在对OutOfMemoryError进行故障排除时&#xff0c;它可能对您很方便。 这些JVM参数是&#xff1a; -XX&#xff1a; HeapDumpOnOutOfMemoryError -XX&#xff1a;HeapDumpPath -XX…

This beta version of Typora is expired, please download and install a newer;解决方法

亲测可行的方法&#xff0c;方便永久 1.打开注册表 cmd&#xff08;Win R&#xff09;–>regedit 2.修改Typora权限 计算机\HKEY_CURRENT_USER\Software\Typora 右键Typora选择权限打开&#xff0c;然后选择拒绝 注意需要选择好组与用户名【最直接的就是所有用户与组均点…

IEEE在指定期刊下搜索相关论文

在左边Publication Title中直接输入目标期刊&#xff0c;搜索后结果显示指定期刊下文章

操作方法:Spring Boot和Thymeleaf与Maven

Spring Boot是一款出色的软件&#xff0c;可让您在几秒钟内引导Spring应用程序。 它确实有效。 尽可能少的配置即可上手。 而且仍然可以更改默认值。 让我们看看用Thymeleaf和Maven引导Spring MVC并在IntelliJ中使用它是多么容易。 Spring MVC Thymeleaf与Maven的基本设置 确…

Ubuntu安装VSCode

1. 一般方法&#xff1a; 首先是进入到vscode官网&#xff1a;https://code.visualstudio.com/Download &#xff0c;选择.deb包下载 但是下载deb包时&#xff0c;速度很慢而且一直提示“网络连接已断开” 2. 解决办法&#xff1a; 将下载地址中 az764295.vo.msecnd.net 替换…

如何在Java中使用正则表达式?

正则表达式是用于文本搜索的非常重要的工具。 以下是用于执行正则表达式搜索并基于正则表达式捕获字符串的不同部分的代码段 public class RegexTest { public static void main(String[] args) { String name "01_My-File.pdf" ; match(name); match( "09_03_…

xxx is not in the sudoers file.This incident will be reported错误

一 问题解决 在执行sudo命令时会有如下提示&#xff1a; xx is not in the sudoers file. This incident will be reported. 原因分析&#xff1a;一般这种情况是创建了新用户&#xff0c;没有对应修改sudoers文件或者group文件。 解决方法&#xff1a; 方法1&#xff1a;…

Ubuntu压缩与解压文件

tar -xvf FileName.tar # 解包tar -cvf FileName.tar DirName # 将DirName文件打包 注意 -c create -x extract

java字节码_好的,每个接触Java字节码的人

java字节码Oracle诉Google一案认为&#xff0c;复制Java API的结构&#xff0c;序列和组织是侵犯版权的行为。 侵犯版权不仅是复制行为&#xff0c;而且还适用于拥有该作品副本的所有中间方。 那就是编写/编译任何JVM语言的人&#xff0c;以及在他们拥有的任何设备上都有JAR文…

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

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

Acwing刷题第一节

756 题目分析 &#xff1a; 要点如下&#xff1a; 1. 矩阵遍历&#xff1a;确定遍历方向 2. 确定遍历边界 #include <cstring> #include <iostream> #include <algorithm> using namespace std; const int N 110; int n,m; int res[N][N];int main() {…

Jetty,Java和OAuth入门

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

vscode 设置 sublime 的主题

vscode 怎么设置 sublime 的主题&#xff1f; VsCode中提供多种主题样式&#xff0c;供使用者选择。 由于习惯于Sublime默认主题&#xff0c;因此将VsCode主题更换为Sublime默认主题。 首先点击编辑器顶部导航菜单中的【文件】&#xff1b; 然后点击【首选项】下【颜色主题】…

VsCode与Sublime编辑器优缺点对比

一 VS code与Sublime共同点 文本功能强大&#xff0c;支持各种语言高亮支持编译&#xff0c;且可以在控制台看到输出可安装大量插件 二 VsCode优点 1. 插件管理成熟 插件很多&#xff0c;近vscode发展势头猛&#xff0c;安装插件方便简单&#xff0c;有插件的详细介绍 vscode新…

spring预加载与懒加载_通过Spring将继承树加载到List中

spring预加载与懒加载我注意到有趣的Spring功能。 我的一位同事使用它将Spring Bean的整个继承树加载到列表中。 在学习Spring文档时错过了这一点。 让我们来看看Spring bean的继承树&#xff1a; 下面的代码片段是通过构造函数注入将此豆树加载到列表中的&#xff1a; Comp…