在使用XP進(jìn)行開(kāi)發(fā)的過(guò)程,unit test是必不可少的環(huán)節(jié)。作為unit test,junit是的工具。本文從使用目的、如何使用、以及使用中需要考慮的問(wèn)題,簡(jiǎn)略描述了junit的基本用法。
使用目的
junit是java中書(shū)寫(xiě)unit test的framework,目前一些流行的unit test工具大都都是在junit上擴(kuò)展而來(lái)的。目前它的版本是junit3.8.1,可以從www.junit.org上下載。
用法
1. 基本使用步驟,Junit的使用非常簡(jiǎn)單,它的基本使用步驟:
- 創(chuàng)建,從junit.framework.TestCase派生unit test需要的test case
- 書(shū)寫(xiě)測(cè)試方法,提供類(lèi)似于如下函數(shù)簽名的測(cè)試方法:
public void testXXXXX();
- 編譯,書(shū)寫(xiě)完test case后,編譯所寫(xiě)的test case類(lèi)
- 運(yùn)行,啟動(dòng)junit test runner,來(lái)運(yùn)行這個(gè)test case。
Junit提供了2個(gè)基本的test runner:字符界面和圖形界面。啟動(dòng)命令分別如下:
a 圖形界面:
java junit.swingui.TestRunner XXXXX
b 字符界面:
java junit.textui.TestRunner XXXXX
2. 使用例子:
import junit.frmework.TestCase;
public class TestSample extends TestCaset{
public void testMethod1(){
assertTrue( true);
}
}
3. setUp與tearDown,這兩個(gè)函數(shù)是junit framework中提供初始化和反初始化每個(gè)測(cè)試方法的。setUp在每個(gè)測(cè)試方法調(diào)用前被調(diào)用,負(fù)責(zé)初始化測(cè)試方法所需要的測(cè)試環(huán)境;tearDown在每個(gè)測(cè)試方法被調(diào)用之后被調(diào)用,負(fù)責(zé)撤銷(xiāo)測(cè)試環(huán)境。它們與測(cè)試方法的關(guān)系可以描述如下:
測(cè)試開(kāi)始 -> setUp -> testXXXX -> tearDown ->測(cè)試結(jié)束
4. 使用例子:
import junit.frmework.TestCase;
public class TestSample extends TestCaset{
protected void setUp(){
//初始化……
}
public void testMethod1(){
assertTrue( true);
}
potected void tearDown(){
//撤銷(xiāo)初始化……
}
}
5. 區(qū)分fail、exception。
- fail,期望出現(xiàn)的錯(cuò)誤。產(chǎn)生原因:assert函數(shù)出錯(cuò)(如assertFalse(true));fail函數(shù)產(chǎn)生(如fail(……))。
- exception,不期望出現(xiàn)的錯(cuò)誤,屬于unit test程序運(yùn)行時(shí)拋出的異常。它和普通代碼運(yùn)行過(guò)程中拋出的runtime異常屬于一種類(lèi)型。
對(duì)于assert、fail等函數(shù)請(qǐng)參見(jiàn)junit的javadoc。
6. 使用例子:
import junit.frmework.TestCase;
public class TestSample extends TestCaset{
protected void setUp(){
//初始化……
}
public void testMethod1(){
……
try{
boolean b= ……
assertTrue( b);
throw new Exception( “This is a test.”);
fail( “Unable point.”); //不可能到達(dá)
}catch(Exception e){
fail( “Yes, I catch u”); //應(yīng)該到達(dá)點(diǎn)
}
……
}
potected void tearDown(){
//撤銷(xiāo)初始化……
}
}