欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
“JUnit4.0 in 10 minutes” learning minutes

“JUnit4.0 in 10 minutes” learning minutes

TestNGJUnit嘴仗似乎告一段落了,Gunjan Doshi今天發(fā)布了一個(gè)"JUnit 4.0 in 10 Minutes: A Quick Reference Guide",學(xué)習筆記如下。

注:所有代碼和插圖都來(lái)自于原文。

首先來(lái)看看JUnit4.0以前,我們怎樣編寫(xiě)測試用例:

  1. 測試用例必須繼承自"junit.framework.TestCase";
  2. 測試用例函數必須以"test"開(kāi)頭;
  3. 用assert的系列函數來(lái)驗證結果。

如果用JUnit4.0重寫(xiě),將是這個(gè)樣子:

  1. 不用再繼承自"junit.framework.TestCase",TestNG批評JUnit的一個(gè)方面就是在JUnit中,每一個(gè)測試用例都會(huì )實(shí)例化一份TestCase,帶來(lái)效率的降低。JUnit4.0確實(shí)修改了這樣的設計。
  2. 測試函數名稱(chēng)不用再以"test"開(kāi)頭,而用Annotation"@Test"來(lái)修飾;
  3. assert系列函數沒(méi)有大的改變;
  4. 如果希望用老的JUnit Runner來(lái)運行JUnit4.0的測試用例,需要用Junit4TestAdapter來(lái)Adapt一下。
  5. 或者可以用新的JUnit4的Runner來(lái)運行。

  1. java org.junit.runner.JUnitCore LibraryTest

 

其中,用"@Test" Annotation來(lái)修飾測試用例是JUnit4.0的一個(gè)大Feature,這也正是這種Metadata應該發(fā)揮作用的地方。

"@Test"有兩個(gè)非常有用的參數:

1) 預期會(huì )拋出的異常檢測

"@Test"的"expected"參數用來(lái)說(shuō)明希望拋出的異常,如果運行時(shí)沒(méi)有拋出這個(gè)異常,測試用例就被標識為失敗。

 

2) 預期運行時(shí)間

"@Test"有一個(gè)timeout的參數用來(lái)說(shuō)明這個(gè)測試用例運行的時(shí)間最長(cháng)應該為多少,如果時(shí)間超出,則標識為失敗。

  1. @Test (timeout=10)

TestNG批評JUnit的另一個(gè)方面是所有的測試用例函數都會(huì )在測試執行前執行setUp,在測試后執行tearDown,不僅效率很低,也會(huì )帶來(lái)很多問(wèn)題(比如一次性的數據庫鏈接等等)。

JUnit4.0這樣解決這個(gè)問(wèn)題:

引入Annotation"Before", "After", "BeforeClass", "AfterClass"。

"Before"修飾的函數將會(huì )在每個(gè)測試運行前運行,"After"修飾的函數將在每個(gè)測試用例運行后運行。JUnit4.0支持任意數量的"Before"和"After" Annotation,并且支持繼承。"Before"修飾函數的執行順序為父類(lèi)的在前,繼承類(lèi)在后,"After"則相反,繼承類(lèi)在前,父類(lèi)在后。

"BeforeClass"修飾的函數將會(huì )在所有的測試用例運行前運行一次(只運行一次), "AfterClass"則會(huì )在所有的測試用例運行后運行一次(只運行一次)。

JUnit4.0還有一個(gè)有用的Annotation "@Ignore",它用來(lái)修飾將被忽略的函數,用"@Ignore"修飾的測試用例函數將不會(huì )執行。這個(gè)Annotation支持一個(gè)字符串參數,用來(lái)說(shuō)明忽略的原因,比如:

  1. @Ignore(Database is down)

 

TestNG則采用配置文件的辦法解決這個(gè)問(wèn)題,兩種方法各有利弊。

Reference:

JUnit 4.0 in 10 Minutes: A Quick Reference Guide [PDF] - Gunjan Doshi

注:所有代碼和插圖都來(lái)自于原文。

Popularity: 24%

Related entries:

TDD, JUnit, TestNG

July 9, 2005

前兩天注意到TheServerSide上一個(gè)挺老的新聞,TestNG陣營(yíng)認為JUnit在最新的4.0版本中“抄襲”了他們的Idea,TestNG的Co-Founder分別在自己的Blog上發(fā)言來(lái)證明(Cedric Beust:JUnit 4 overview,Alexandru Popescu:JUnit 4.0),Erich Gamma則留言反擊,聽(tīng)起來(lái)滿(mǎn)有意思,于是我也順便研究了一下TestNG。

"…I’m not quite sure what is the driving vision behind JUnit 4 (besides TestNG

)".

I’m glad that there is TestNG, but there are also other interesting testing framework efforts. In particular there is NUnit.NUnit has introduced using annotations in testing frameworks a while ago. Most of the requests for annotation based tests came from the dual NUnit/JUnit users. So we are listening to the community.

Posted by: Erich Gamma at June 11, 2005 09:02 AM

先來(lái)說(shuō)說(shuō)TDD(Test Driven Development)- 測試驅動(dòng)開(kāi)發(fā),想了解TDD,最好看看Kent Back的《測試驅動(dòng)開(kāi)發(fā)》,里面詳細的講述了TDD的原理、實(shí)踐。不過(guò),我覺(jué)得,只有你真正的去用了,才能體會(huì )到測試驅動(dòng)開(kāi)發(fā)給你帶來(lái)的好處。

我覺(jué)得,TDD給我們帶來(lái)的好處有很多:

1)從功能需求入手,設計對象,在寫(xiě)TestCase的時(shí)候其實(shí)就是對象設計的時(shí)候,這樣,TestCase寫(xiě)好寫(xiě)全了,對象也就設計好了;

2)可以在開(kāi)發(fā)階段找到很多Bug(尤其是很多邊緣測試的情況),減少后期Debug的時(shí)間;

3)減少由于重構或者Fix其它Bug的時(shí)候帶來(lái)的Regression。

全部測試通過(guò),開(kāi)發(fā)也就結束了,真的很有幫助。

舉個(gè)例子,比如Xerdoc DSearch中JPEG Parser Plugin的開(kāi)發(fā)。首先從功能需求的角度出發(fā),這個(gè)Parser要負責解析出JPEG文件的EXIF頭信息,那么ok,我就設計一個(gè)ExifInfo的解析Parser類(lèi)。然后開(kāi)始寫(xiě)TestCase。

  1. public void testParseExifInfor() {
  2.         String filePath = "P8040002.JPG";
  3.         File picFile = new File(filePath);
  4.         ExifInfor exif = new ExifInfor(filePath);
  5.        
  6.         assertTrue(exif != null);
  7.         assertEquals(600, exif.getWidth());
  8.         assertEquals(true, exif.isColor());
  9.          
  10.           ... ...
  11. }

在進(jìn)行測試用例(TestCase)設計的時(shí)候,我們就可以設計出ExifInfor類(lèi)的基本接口,剩余的工作可以留到重構(Refactoring:是XP Programming中另一個(gè)非常棒的概念。)的時(shí)候進(jìn)行了。

當然,測試用例要Cover盡可能多的情況,比如不標準的Exif信息等等,當開(kāi)發(fā)結束,所有的測試都通過(guò)的時(shí)候,你就可以沖上一杯咖啡,來(lái)想想重構的事兒了(當然,重構完畢還是需要用TestCase來(lái)檢驗重構的結果的,呵呵)。

TestNG(Test Next Generation - The next generation of unit testing),顧名思義,目標直指下一代的測試框架。

TestNG比起JUnit來(lái)說(shuō),變化主要表現在:

1)最大的不同就是TestNG利用了JavaSE 5.0中的Annotations(JSR175)來(lái)代替test開(kāi)頭的用例函數名(TestNG說(shuō),現有IDE大多都按照函數名排序了,test打頭弄得這些函數不好分辨,呵呵)。我覺(jué)得這個(gè)Idea確實(shí)不錯,而且本應如此,Annotation就是用來(lái)干這個(gè)的嘛。不過(guò)這個(gè)其實(shí)不能怪JUnit,JUnit出來(lái)的時(shí)候Annotations還沒(méi)有出現在Java語(yǔ)言中。

2)解決JUnit中的多實(shí)例化問(wèn)題。在JUnit中,每一個(gè)測試用例都會(huì )實(shí)例化一份TestCase,同時(shí)也會(huì )在測試執行前執行setUp,在測試后執行tearDown。這會(huì )帶來(lái)效率的降低,而有些測試,比如數據庫鏈接,也會(huì )帶來(lái)一些其它問(wèn)題。TestNG用XML配置文件來(lái)解決這樣的問(wèn)題。不過(guò),我覺(jué)得,簡(jiǎn)單才是最美,弄成Ant配置那么復雜的話(huà),真夠麻煩。

3)TestNG對多線(xiàn)程測試的支持良好,只需要配置即可。JUnit中要想進(jìn)行多線(xiàn)程測試比較麻煩,需要其它模塊,比較著(zhù)名的是GroboUtils。

我覺(jué)得很多概念都不錯,比如Group Testing,不需要派生TestCase等等,測試用例函數的參數化等等,不過(guò)這些還是站在了巨人(JUnit)的肩膀上。我不喜歡的是XML Configuration的部署策略,太麻煩。TestNG給出的是這樣的應用場(chǎng)景,一個(gè)小組開(kāi)發(fā),寫(xiě)好所有的測試用例,有的人只需要這幾個(gè),有的人需要那幾個(gè),因為全部編譯測試非?;ㄙM時(shí)間,這樣,更改XML Configuration就可以了,確實(shí)如此,不過(guò)我實(shí)在不喜歡什么東西都用這種配置文件來(lái)弄,簡(jiǎn)單的事情變得復雜,就不好玩兒了。就連Ant之父James Duncan Davidson也覺(jué)得Ant現在的腳本太復雜呢,呵呵。

從0到1和從1到2是完全不同的,基于測試開(kāi)發(fā)這個(gè)Idea真的是非常棒,這種Test Driven Development真的極大的改變了軟件開(kāi)發(fā)的方式。最早的Idea不知道是誰(shuí)的,我記著(zhù)從前看Bruce EckelThinking in Java的時(shí)候,就有單元測試的影子。插一句,其實(shí),Java中的Assert Keyword,MFC中的Assert宏,也都有TDD的影子,不過(guò)還差很多,但是開(kāi)發(fā)理念已經(jīng)有幾分相像了。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
JUnit之TestCase和TestSuite詳解
jsunit原理
Maven單元測試
TestNG 入門(mén)教程
追求代碼質(zhì)量: JUnit 4 與 TestNG 的對比
學(xué)習JUnit
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久