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

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

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

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

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

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

@ignore:
該元數(shù)據(jù)標(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)行測試方法。


 

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

 

我們在編寫大型程序的時(shí)候,需要寫成千上萬個(gè)方法或函數(shù),這些函數(shù)的功能可能很強(qiáng)大,但我們在程序中只用到該函數(shù)的一小部分功能,并且經(jīng)過調(diào)試可以確定,這一小部分功能是正確的。但是,我們同時(shí)應(yīng)該確保每一個(gè)函數(shù)都完全正確,因?yàn)槿绻覀兘窈笕绻麑?duì)程序進(jìn)行擴(kuò)展,用到了某個(gè)函數(shù)的其他功能,而這個(gè)功能有bug的話,那是一件非常郁悶的事情。所以說,每編寫完一個(gè)函數(shù)之后,都應(yīng)該對(duì)這個(gè)函數(shù)的方方面面進(jìn)行測試,這樣的測試我們稱之為單元測試。傳統(tǒng)的編程方式,進(jìn)行單元測試是一件很麻煩的事情,你要重新寫另外一個(gè)程序,在該程序中調(diào)用你需要測試的方法,并且仔細(xì)觀察運(yùn)行結(jié)果,看看是否有錯(cuò)。正因?yàn)槿绱寺闊猿绦騿T們編寫單元測試的熱情不是很高。于是有一個(gè)牛人推出了單元測試包,大大簡化了進(jìn)行單元測試所要做的工作,這是JUnit4。本文簡要介紹一下在Eclipse3.2中使用JUnit4進(jìn)行單元測試的方法。

 

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

 

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

 

package andycpp;

 

public class Calculator ...{

    private static int result; // 靜態(tài)變量,用于存儲(chǔ)運(yùn)行結(jié)果

    public void add(int n) ...{

        result = result + n;

    }

    public void substract(int n) ...{

        result = result - 1;  //Bug: 正確的應(yīng)該是 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() ...{     // 將結(jié)果清零

        result = 0;

    }

    public int getResult() ...{

        return result;

    }

}

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