您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUnit4概述(一)
作者:網(wǎng)絡轉載 發(fā)布時間:[ 2013/12/9 10:30:24 ] 推薦標簽:

我們可以看到,采用Annotation的JUnit已經(jīng)不會霸道的要求你必須繼承自TestCase了,而且測試方法也不必以test開頭了,只要以@Test元數(shù)據(jù)來描述即可。
從上面的例子可以看到在JUnit 4中還引入了一些其他的元數(shù)據(jù),下面一一介紹:
@Before:
使用了該元數(shù)據(jù)的方法在每個測試方法執(zhí)行之前都要執(zhí)行一次。

@After:
使用了該元數(shù)據(jù)的方法在每個測試方法執(zhí)行之后要執(zhí)行一次。

注意:@Before和@After標示的方法只能各有一個。這個相當于取代了JUnit以前版本中的setUp和tearDown方法,當然你還可以繼續(xù)叫這個名字,不過JUnit不會霸道的要求你這么做了。

@Test(expected=*.class)
在JUnit4.0之前,對錯誤的測試,我們只能通過fail來產(chǎn)生一個錯誤,并在try塊里面assertTrue(true)來測試,F(xiàn)在,通過@Test元數(shù)據(jù)中的expected屬性。expected屬性的值是一個異常的類型

@Test(timeout=xxx):
該元數(shù)據(jù)傳入了一個時間(毫秒)給測試方法,
如果測試方法在制定的時間之內(nèi)沒有運行完,則測試也失敗。

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


 

在Eclipse中使用JUnit4進行單元測試(初級篇)

 

我們在編寫大型程序的時候,需要寫成千上萬個方法或函數(shù),這些函數(shù)的功能可能很強大,但我們在程序中只用到該函數(shù)的一小部分功能,并且經(jīng)過調(diào)試可以確定,這一小部分功能是正確的。但是,我們同時應該確保每一個函數(shù)都完全正確,因為如果我們今后如果對程序進行擴展,用到了某個函數(shù)的其他功能,而這個功能有bug的話,那是一件非常郁悶的事情。所以說,每編寫完一個函數(shù)之后,都應該對這個函數(shù)的方方面面進行測試,這樣的測試我們稱之為單元測試。傳統(tǒng)的編程方式,進行單元測試是一件很麻煩的事情,你要重新寫另外一個程序,在該程序中調(diào)用你需要測試的方法,并且仔細觀察運行結果,看看是否有錯。正因為如此麻煩,所以程序員們編寫單元測試的熱情不是很高。于是有一個牛人推出了單元測試包,大大簡化了進行單元測試所要做的工作,這是JUnit4。本文簡要介紹一下在Eclipse3.2中使用JUnit4進行單元測試的方法。

 

首先,我們來一個傻瓜式速成教程,不要問為什么,F(xiàn)ollow Me,先來體驗一下單元測試的快感!

 

首先新建一個項目叫JUnit_Test,我們編寫一個Calculator類,這是一個能夠簡單實現(xiàn)加減乘除、平方、開方的計算器類,然后對這些功能進行單元測試。這個類并不是很完美,我們故意保留了一些Bug用于演示,這些Bug在注釋中都有說明。該類代碼如下:

 

package andycpp;

 

public class Calculator ...{

    private static int result; // 靜態(tài)變量,用于存儲運行結果

    public void add(int n) ...{

        result = result + n;

    }

    public void substract(int n) ...{

        result = result - 1;  //Bug: 正確的應該是 result =result-n

    }

    public void multiply(int n) ...{

    }         // 此方法尚未寫好

    public void divide(int n) ...{

        result = result / n;

    }

    public void square(int n) ...{

        result = n * n;

    }

    public void squareRoot(int n) ...{

        for (; ;) ;            //Bug : 死循環(huán)

    }

    public void clear() ...{     // 將結果清零

        result = 0;

    }

    public int getResult() ...{

        return result;

    }

}

上一頁12下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd