測試框架的利好和繁榮:Java單元測試框架之爭_第1頁
測試框架的利好和繁榮:Java單元測試框架之爭_第2頁
測試框架的利好和繁榮:Java單元測試框架之爭_第3頁
測試框架的利好和繁榮:Java單元測試框架之爭_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論