<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)

    成員連接

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    這篇文章算是一個翻譯了。分成兩部分,集合了兩篇 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 版本中的一些改進和新的用法。

    要很好的使用 JUnit 4.x ,必須要 Java SE 5.0 ,因為這個版本最大的變化就是加入了大量的 Annotation 的使用。

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

    有幾點需要關注:

    1 —— 一個測試案例必須要繼承自 TestCase

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

    3 —— 使用一個或幾個 assertXXX 方法來驗證我們的情況。

    ?

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

    首先關注以下幾點:

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

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

    ?

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

    1 ——我們需要引進 org.junit.Test 標簽,還有很多標簽都在 org.junit.* 包里面。

    2 ——引進 static assertEquals 靜態方法,引入靜態方法也是 Java 5 的一個新的特性,避免了使用過長的應用方法名。

    3 ——引進 JUnit4TestAdapter ,這是一個和老版本 JUnit 工具合用的適配器。

    4 ——使用 @Test 標簽來申明一個方法需要測試。

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

    6 ——使用一個 main 方法來用 JUnit4TestAdapter 在老的 Junit runner 上運行新的測試。

    ?

    總結一下:

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

    l???????? 使用 @Test 標簽來標記一個方法是一個測試方法。

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

    l???????? 使用 JUnit4TestAdapter 來運行測試。

    ?

    Set up tear down

    新版本的 JUnit 提供了兩個新的標簽來使用 set up tear down

    @Before :使用了該標記的方法在每個測試方法執行之前都要執行一次。

    @After :使用了該標記的方法在每個測試方法執行之后要執行一次。

    ?

    這里有個測試的例子:

    如果我們在所有的方法中都添加一個 System.out.println() 方法,執行的結果會像這樣:

    ?????? runOnceBeforeAllTests() 被調用;

    bookNotAvailableInLibrary() 被調用;

    bookAvailableInCentralLibrary ()被調用;

    runAfterAllTests ()被調用,

    而如果我們還有一個 @Before beforeTest() 方法和一個 @After afterTest() 方法,那么執行的結果會是這樣:

    ?????? runOnceBeforeAllTests() 被調用;

    ?????? beforeTest() 被調用;

    bookNotAvailableInLibrary() 被調用;

    afterTest ()被調用;

    beforeTest() 被調用;

    bookAvailableInCentralLibrary ()被調用;

    afterTest ()被調用;

    runAfterAllTests ()被調用,

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

    另外一點, @Before @After 標示的方法只能各有一個。

    ?

    錯誤處理:

    JUnit4.0 之前,對錯誤的測試,我們只能通過 fail 來產生一個錯誤,并在 try 塊里面 assertTrue true )來測試。現在,通過 @Test 標簽中的 expected 屬性,就可以更優雅的測試錯誤了:

    在這段代碼中,我們為 @Test 標簽添加了 expected 屬性,并提供了一個 BookNotAvailableException ,那么在這段測試中,如果代碼沒有拋出這個類型的錯誤,測試就失敗了,如果正確拋出該類型錯誤,測試通過。

    ?

    其他的標簽:

    @ignore 標簽:

    該標簽標記的測試方法在測試中會被忽略。當測試的方法還沒有實現,或者測試的方法已經過時,或者在某種條件下才能測試該方法(比如需要一個數據庫聯接,而在本地測試的時候,數據庫并沒有連接),那么使用該標簽來標示這個方法。同時,你可以為該標簽傳遞一個 String 的參數,來表明為什么會忽略這個測試方法。比如: @lgnore(“ 該方法還沒有實現 ”) ,在執行的時候,僅會報告該方法沒有實現,而不會運行測試方法。

    ?

    @Test(timeout=xxx):

    該標簽傳入了一個時間(毫秒)給測試方法,

    如果測試方法在制定的時間之內沒有運行完,則測試也失敗。

    ?

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

    ?(注:本文作者,EasyJF開源團隊 stef_wu,轉載請保留作者聲明!)

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

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

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 黄色视屏在线免费播放| 一个人在线观看视频免费 | 日本媚薬痉挛在线观看免费| 99无码人妻一区二区三区免费| 99久久人妻精品免费一区| 1000部无遮挡拍拍拍免费视频观看| 99久久99久久精品免费看蜜桃 | 中文字幕亚洲无线码a| 色播亚洲视频在线观看| 77777午夜亚洲| 一区二区三区在线免费观看视频| 在线观看免费黄网站| 91成年人免费视频| 一区二区三区亚洲视频| 亚洲专区先锋影音| 日韩国产精品亚洲а∨天堂免| 免费看黄的成人APP| 免费av欧美国产在钱| 亚洲Aⅴ无码专区在线观看q | 精品国产_亚洲人成在线高清| 亚洲人成777在线播放| 亚洲日韩VA无码中文字幕| 亚洲欧洲在线观看| 自拍偷自拍亚洲精品播放| 久久中文字幕免费视频| 亚洲?v女人的天堂在线观看| 77777亚洲午夜久久多喷| a毛片久久免费观看| 亚洲精品视频在线观看你懂的| 伊伊人成亚洲综合人网7777| 亚洲视频一区二区三区| 亚洲国产精品无码久久九九大片| 久久精品乱子伦免费| 久久亚洲国产成人精品无码区| 自拍偷自拍亚洲精品偷一| 一二三四免费观看在线电影| 性xxxx黑人与亚洲| 97人伦色伦成人免费视频| 亚洲国产精品一区二区久| 国产成人精品免费视频大全麻豆| 亚洲精品人成在线观看|