下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第第頁測試框架的利好和繁榮:Java單元測試框架之爭測試框架的利好和繁榮:Java單元測試框架之爭
發(fā)表于:2023-06-28來源:infoq:MichaelRedlich點擊數(shù):標(biāo)簽:框架
最近Reddit上的討論帖引發(fā)了一場JUnit和Spock兩個測試框架支持者之間的辯論,源起于JakubDziworski發(fā)表的博文,其中心思想是“JUnit有什么問題?”目前來看幾乎每個GitHub倉庫都引入了
最近Reddit上的討論帖引發(fā)了一場JUnit和Spock兩個(測試)框架支持者之間的辯論,源起于JakubDziworski發(fā)表的博文,其中心思想是"JUnit有什么問題?'目前來看幾乎每個GitHub倉庫都引入了基于JUnit的單元(測試),不過也難怪畢竟JUnit已經(jīng)經(jīng)歷了超過15個年頭。但是Spock正在持續(xù)蠶食市場。
JUnit由極限(編程)(eXtremeprogramming)創(chuàng)始人KentBeck、《設(shè)計模式:可復(fù)用面向?qū)ο筌浖幕A(chǔ)》合著者ErichGamma共同創(chuàng)造,并且很快變成(單元測試)領(lǐng)域的事實標(biāo)準(zhǔn),被移植和克隆到幾乎所有流行的(編程)語言中。然而,這些年來JUnit的的特性一直被新的(單元測試)框架質(zhì)疑,例如TestNG和Spock。
TestNG
TestNG由《(Java)測試新技術(shù)TestNG和高級概念》合著者CdricBeust于2023年創(chuàng)造。根據(jù)TestNG網(wǎng)站描述,"TestNG是從JUnit和NUnit汲取靈感的測試框架,但是引入了一些新的功能使其更加強大并且易于使用'。Beust在其自己的網(wǎng)站上寫道,"我開始編寫TestNG是出于無奈,JUnit有一些不足之處,這些問題我在博客的這里和這里進(jìn)行了標(biāo)注。'
Spock
Dziworski在博文中質(zhì)疑了使用JUnit需要結(jié)合第三方mock框架。他表示,"在中型和大型Java項目中結(jié)合這些框架會是得讀寫測試變得更加困難。'他隨后說道,"如果測試代碼難以編寫,(開發(fā))者通常會將編寫測試代碼作為痛苦工作,并開始忽略它們。避免或者延遲編寫測試代碼會導(dǎo)致應(yīng)用無法再被信任。最后(開發(fā))者會害怕修改這些代碼,因為應(yīng)用的其他部分可能以某種奇怪的方式出現(xiàn)問題。'
在最近Java希臘用戶組會議中,《Java測試框架Spock》的KostisKapelonis做了演講,比較了JUnit和Spock。
Spock由Gradleware首席(工程師)PeterNiederwieser于2023年創(chuàng)建。雖然靈感來自于JUnit,Spock的特性不僅僅是JUnit的擴(kuò)展:
測試代碼使用Groovy語言編寫,而被測代碼可以由Java編寫。
內(nèi)置mock框架以減少引入第三方框架。
可支持自定義測試件名稱。
為創(chuàng)建測試代碼預(yù)定義了行為驅(qū)動塊(given:、when:、then:、expect:等)。
使用數(shù)據(jù)表格以減少數(shù)據(jù)結(jié)構(gòu)的使用(需求)。
以下代碼片段(和Reddit討論中使用的相同)演示了部分特性的使用:
classMathextendsSpecification{
defmaximumoftwonumbers(inta,intb,intc){
expect:
Math.max(a,b)==c
where:
a|b|c
1|3|3//passes
7|4|4//fails
0|0|0//passes
}
}
這個簡單的測試示例使用了兩個預(yù)定義的塊,expect:(第三行)和where:(第五行)。where:塊用于定義數(shù)據(jù)表格,用于映射第四行定義的Math.max函數(shù)的期望輸入輸出。第二行演示了如何為(測試(用例))自定義一個名稱。
一個包含JUnit和Spock代碼示例的完整項目可以在GitHub上查看。
早在2023年就報道了關(guān)于JUnit滅亡的一些猜想。八年后JUnit5項目仍然健在,里程碑1正在開發(fā)中。測試框架的利好和繁榮!
查看英文原文:Tes
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度嬰幼兒游泳館加盟服務(wù)合同4篇
- 二零二五年度實木地板翻新與保養(yǎng)服務(wù)合同4篇
- 2025年代理協(xié)議示范文本-辦公文具代理合同
- 2025版別墅區(qū)物業(yè)委托經(jīng)營管理服務(wù)標(biāo)準(zhǔn)范本3篇
- 二零二五年度公司股權(quán)激勵計劃后續(xù)管理與跟蹤合同2篇
- 2025年中國雙面羊絨大衣行業(yè)市場調(diào)研分析及投資戰(zhàn)略咨詢報告
- 2025年度海洋科學(xué)研究中心研究員聘用合同
- 2025年度交通行業(yè)短期運輸司機勞動合同
- 二零二五年度消防安全員消防技術(shù)咨詢服務(wù)聘用合同
- 二零二五年度農(nóng)業(yè)科技推廣勞務(wù)合同執(zhí)行與效果評估
- 第三單元名著導(dǎo)讀《經(jīng)典常談》知識清單 統(tǒng)編版語文八年級下冊
- 第十七章-阿法芙·I·梅勒斯的轉(zhuǎn)變理論
- 焊接機器人在汽車制造中應(yīng)用案例分析報告
- 合成生物學(xué)在生物技術(shù)中的應(yīng)用
- 中醫(yī)門診病歷
- 廣西華銀鋁業(yè)財務(wù)分析報告
- 無違法犯罪記錄證明申請表(個人)
- 大學(xué)生勞動教育PPT完整全套教學(xué)課件
- 繼電保護(hù)原理應(yīng)用及配置課件
- 《殺死一只知更鳥》讀書分享PPT
- 蓋洛普Q12解讀和實施完整版
評論
0/150
提交評論