<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 115  文章 - 481  trackbacks - 0
    <2006年11月>
    2930311234
    567891011
    12131415161718
    19202122232425
    262728293012
    3456789

    常用鏈接

    留言簿(19)

    隨筆檔案(115)

    文章檔案(4)

    新聞檔案(1)

    成員連接

    搜索

    •  

    最新評(píng)論

    閱讀排行榜

    評(píng)論排行榜

    這篇文章算是一個(gè)翻譯了。分成兩部分,集合了兩篇 JUnit.org 上的推薦文章,這里是原文的地址:

    http://www.instrumentalservices.com/index.php?option=com_content&task=view&id=45&Itemid=52

    http://www.devx.com/Java/Article/31983

    ?

    JUnit 我就不多做介紹了, Kent Beck Erich Gamma 的作品。這里主要講一下在 JUnit 4.0 4.1 版本中的一些改進(jìn)和新的用法。

    要很好的使用 JUnit 4.x ,必須要 Java SE 5.0 ,因?yàn)檫@個(gè)版本最大的變化就是加入了大量的 Annotation 的使用。

    來通過一個(gè)例子看下,首先是一個(gè)老版本的測試案例:

    有幾點(diǎn)需要關(guān)注:

    1 —— 一個(gè)測試案例必須要繼承自 TestCase

    2 —— JUnit 是通過反射機(jī)制來執(zhí)行每一個(gè) test 方法,它通過匹配方法名 testXXX 來確定一個(gè)方法為需要執(zhí)行的測試 Case

    3 —— 使用一個(gè)或幾個(gè) assertXXX 方法來驗(yàn)證我們的情況。

    ?

    好,現(xiàn)在使用 JUnit 4.x 來實(shí)現(xiàn)相同的測試,從中,我們就能看到一些新的東西:

    首先關(guān)注以下幾點(diǎn):

    1 ——我們的測試類并沒有 extends TestCase 類了,

    2 ——我們的測試方法并沒有以 test 開頭,而是使用了 @Test 標(biāo)簽來標(biāo)記該方法是一個(gè)需要測試的方法。

    ?

    下面的圖標(biāo)示了用 JUnit 4.x 我們需要做的事情:

    1 ——我們需要引進(jìn) org.junit.Test 標(biāo)簽,還有很多標(biāo)簽都在 org.junit.* 包里面。

    2 ——引進(jìn) static assertEquals 靜態(tài)方法,引入靜態(tài)方法也是 Java 5 的一個(gè)新的特性,避免了使用過長的應(yīng)用方法名。

    3 ——引進(jìn) JUnit4TestAdapter ,這是一個(gè)和老版本 JUnit 工具合用的適配器。

    4 ——使用 @Test 標(biāo)簽來申明一個(gè)方法需要測試。

    5 ——直接使用需要的 assert 方法

    6 ——使用一個(gè) main 方法來用 JUnit4TestAdapter 在老的 Junit runner 上運(yùn)行新的測試。

    ?

    總結(jié)一下:

    l???????? 使用一個(gè)普通的類,而不必繼承自 Junit.framework.TestCase

    l???????? 使用 @Test 標(biāo)簽來標(biāo)記一個(gè)方法是一個(gè)測試方法。

    l???????? 使用一個(gè) assert 方法。在新版本的 Junit 中, assert 方法和老方法沒有什么區(qū)別。并且使用靜態(tài)方法引入,( static import )特性來簡化方法的使用。

    l???????? 使用 JUnit4TestAdapter 來運(yùn)行測試。

    ?

    Set up tear down

    新版本的 JUnit 提供了兩個(gè)新的標(biāo)簽來使用 set up tear down

    @Before :使用了該標(biāo)記的方法在每個(gè)測試方法執(zhí)行之前都要執(zhí)行一次。

    @After :使用了該標(biāo)記的方法在每個(gè)測試方法執(zhí)行之后要執(zhí)行一次。

    ?

    這里有個(gè)測試的例子:

    如果我們?cè)谒械姆椒ㄖ卸继砑右粋€(gè) System.out.println() 方法,執(zhí)行的結(jié)果會(huì)像這樣:

    ?????? runOnceBeforeAllTests() 被調(diào)用;

    bookNotAvailableInLibrary() 被調(diào)用;

    bookAvailableInCentralLibrary ()被調(diào)用;

    runAfterAllTests ()被調(diào)用,

    而如果我們還有一個(gè) @Before beforeTest() 方法和一個(gè) @After afterTest() 方法,那么執(zhí)行的結(jié)果會(huì)是這樣:

    ?????? runOnceBeforeAllTests() 被調(diào)用;

    ?????? beforeTest() 被調(diào)用;

    bookNotAvailableInLibrary() 被調(diào)用;

    afterTest ()被調(diào)用;

    beforeTest() 被調(diào)用;

    bookAvailableInCentralLibrary ()被調(diào)用;

    afterTest ()被調(diào)用;

    runAfterAllTests ()被調(diào)用,

    從這里我們就可以看出兩者的區(qū)別了。

    另外一點(diǎn), @Before @After 標(biāo)示的方法只能各有一個(gè)。

    ?

    錯(cuò)誤處理:

    JUnit4.0 之前,對(duì)錯(cuò)誤的測試,我們只能通過 fail 來產(chǎn)生一個(gè)錯(cuò)誤,并在 try 塊里面 assertTrue true )來測試。現(xiàn)在,通過 @Test 標(biāo)簽中的 expected 屬性,就可以更優(yōu)雅的測試錯(cuò)誤了:

    在這段代碼中,我們?yōu)?/span> @Test 標(biāo)簽添加了 expected 屬性,并提供了一個(gè) BookNotAvailableException ,那么在這段測試中,如果代碼沒有拋出這個(gè)類型的錯(cuò)誤,測試就失敗了,如果正確拋出該類型錯(cuò)誤,測試通過。

    ?

    其他的標(biāo)簽:

    @ignore 標(biāo)簽:

    該標(biāo)簽標(biāo)記的測試方法在測試中會(huì)被忽略。當(dāng)測試的方法還沒有實(shí)現(xiàn),或者測試的方法已經(jīng)過時(shí),或者在某種條件下才能測試該方法(比如需要一個(gè)數(shù)據(jù)庫聯(lián)接,而在本地測試的時(shí)候,數(shù)據(jù)庫并沒有連接),那么使用該標(biāo)簽來標(biāo)示這個(gè)方法。同時(shí),你可以為該標(biāo)簽傳遞一個(gè) String 的參數(shù),來表明為什么會(huì)忽略這個(gè)測試方法。比如: @lgnore(“ 該方法還沒有實(shí)現(xiàn) ”) ,在執(zhí)行的時(shí)候,僅會(huì)報(bào)告該方法沒有實(shí)現(xiàn),而不會(huì)運(yùn)行測試方法。

    ?

    @Test(timeout=xxx):

    該標(biāo)簽傳入了一個(gè)時(shí)間(毫秒)給測試方法,

    如果測試方法在制定的時(shí)間之內(nèi)沒有運(yùn)行完,則測試也失敗。

    ?

    這篇文章就到這里,其實(shí) JUnit4.x 里面還有很多標(biāo)簽的用法,將在明天的 blog 中繼續(xù)。

    ?(注:本文作者,EasyJF開源團(tuán)隊(duì) stef_wu,轉(zhuǎn)載請(qǐng)保留作者聲明!)

    posted on 2006-11-19 19:27 簡易java框架 閱讀(2510) 評(píng)論(1)  編輯  收藏

    FeedBack:
    # re: 10分鐘了解junit 4 2006-11-20 11:46 一滴水
    和.net 的 NUnit 靠攏了 哈哈,基本思想一樣  回復(fù)  更多評(píng)論
      

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 色偷偷亚洲第一综合| 久久久久国产亚洲AV麻豆| 久久受www免费人成_看片中文| 在线免费中文字幕| 在线观看视频免费国语| 国产在线98福利播放视频免费 | 无码av免费网站| 青青在线久青草免费观看| 久久99亚洲网美利坚合众国| 亚洲乱码无限2021芒果| 亚洲精华国产精华精华液好用 | 亚洲AV永久无码精品水牛影视| 亚洲中文字幕AV在天堂| 午夜亚洲乱码伦小说区69堂| 一区二区三区福利视频免费观看| 亚洲av无码av制服另类专区| 0588影视手机免费看片| 亚洲午夜无码片在线观看影院猛| 亚洲一级免费毛片| 人妻无码久久一区二区三区免费| 亚洲中文字幕无码专区| 四虎影视无码永久免费| 日本高清免费中文字幕不卡| 亚洲中文字幕在线无码一区二区| 巨胸喷奶水视频www网免费| 国产亚洲漂亮白嫩美女在线 | 亚洲成?v人片天堂网无码| 亚洲手机中文字幕| 免费人成毛片动漫在线播放| 亚洲av高清在线观看一区二区 | 国产91在线|亚洲| 免费国产真实迷j在线观看| 亚洲欧洲春色校园另类小说| 免费毛片在线看片免费丝瓜视频| 亚洲高清资源在线观看| 国产一精品一av一免费爽爽 | 久久精品国产亚洲77777| 日韩免费a级毛片无码a∨| 日韩在线一区二区三区免费视频| 永久黄网站色视频免费| 亚洲综合偷自成人网第页色|