日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

将Spock 1.3测试迁移到Spock 2.0

發(fā)布時間:2023/12/3 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将Spock 1.3测试迁移到Spock 2.0 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

了解Spock 2.0 M1(基于JUnit 5)的期望,如何在Gradle和Maven中遷移到它以及為什么報告發(fā)現(xiàn)的問題很重要:)。

重要說明 。 我絕對建議您永久將您的現(xiàn)實項目遷移到Spock 2.0 M1! 這是2.x的第一個(預)發(fā)行版,未完成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)執(zhí)行測試)。 這非常方便,因為應該在支持JUnit平臺的任何地方(IDE,構建工具,質量工具等)自動識別并執(zhí)行Spock測試。 另外,平臺本身提供的功能(例如并行測試執(zhí)行)也應該(最終)也適用于Spock。

要將Spock 2引入Gradle項目,需要修改Spock版本:

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

并通過JUnit平臺激活測試執(zhí)行:

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+)將默認執(zhí)行JUnit Platform測試。

可從GitHub獲得Gradle i Maven的最小工作項目。

其他變化

由于具有向JUnit Platform遷移的巨大變化,Spock 2.0 M1中的其他變化數(shù)量有限,從而使查找潛在的回歸原因變得容易一些。 作為遷移本身的副作用,所需的Java版本是8。

此外,所有參數(shù)化測試都會(最終)自動“展開”。 太好了,但是,目前還沒有辦法 “滾動”特定的測試,如Spock 1.x的spock-global-unroll所知。

在發(fā)行說明中可以找到其他一些更改(例如暫時禁用的SpockReportingExtension )。

預計會有更多(可能是重大的)更改合并到里程碑2中。

JUnit 4規(guī)則問題

預期使用JUnit 4 @Rule (或@ClassRule )的測試將失敗,并顯示一條錯誤消息,提示未在測試之前創(chuàng)建/初始化所請求的對象(例如NullPointerException或IllegalStateException: the temporary folder has not yet been created )或之后沒有被驗證/清除(例如,來自AssertJ的軟斷言)。 JUnit平臺不再支持Rules API。 但是,為了@TemporaryFolder遷移(在基于Spock的集成測試中可能經常使用@TemporaryFolder ),有一個專用的spock-junit4在內部將JUnit 4規(guī)則包裝到Spock擴展中,并在Spock的生命周期中執(zhí)行它。 由于它是作為全局擴展實現(xiàn)的,因此唯一需要添加的就是另一個依賴項。 在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執(zhí)行。 不幸的是,沒有關于不兼容的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進行實驗的人們的潛在反饋,該反饋非常接近穩(wěn)定版本(RC2,截至2019/2020)。 由于許多Spock測試僅適用于Groovy 3(特別是一些極端情況),因此特別不方便。 Spock 2在進入決賽之前可能會被調整為Groovy 3的變化,或者至少會取消上述硬性限制。 同時,需要使用快照版本2.0-groovy-2.5-SNAPSHOT (已禁用該檢查)測試Groovy 3支持。

摘要

閱讀這篇文章后要做的動作很簡單。 嘗試在您的項目中暫時使用Spock 2.0 M1并報告任何發(fā)現(xiàn)的問題,以幫助使Spock 2.0更好:)。

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

總結

以上是生活随笔為你收集整理的将Spock 1.3测试迁移到Spock 2.0的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。