<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)航:
     
    主站蜘蛛池模板: 免费成人午夜视频| 亚洲国产国产综合一区首页| 一级做a免费视频观看网站| 亚洲人成人一区二区三区| 久久午夜夜伦鲁鲁片免费无码影视| 国产精品亚洲一区二区麻豆| 亚洲国产综合久久天堂| 久久国产色AV免费看| 国产亚洲女在线线精品| 亚洲日本中文字幕| 五月婷婷亚洲综合| 69pao强力打造免费高清| 羞羞网站免费观看| 亚洲国产精品白丝在线观看| 亚洲av日韩av欧v在线天堂| 91九色老熟女免费资源站| 深夜免费在线视频| www.亚洲成在线| 久久亚洲国产中v天仙www| 四虎影院在线免费播放| 日韩中文字幕免费视频| 污视频网站在线免费看| 亚洲二区在线视频| 亚洲AV永久青草无码精品| 国产极品粉嫩泬免费观看 | 久久亚洲国产中v天仙www| 欧洲乱码伦视频免费| 999zyz**站免费毛片| 亚洲欧美日韩久久精品| 亚洲国产精品久久| 国产亚洲人成网站在线观看| 成人免费无码大片a毛片| 日韩精品极品视频在线观看免费| 国产精品亚洲а∨天堂2021| 亚洲码在线中文在线观看| 亚洲精品成人无限看| 国产gav成人免费播放视频| 国产在线a免费观看| 99re热精品视频国产免费| 二个人看的www免费视频| 羞羞视频在线免费观看|