開發過程中進行單元測試
盡可能盡早的將BUG找出
是開發者應該做的
JUNIT為JAVA開發者提供了一個很好的測試機制
以下是一個簡單的JUNIT應用實例
也是初學可供參考的JUNIT模板
package junitsineattemplet;
import javautilHashtable;
import junitframeworkAssert;
import junitframeworkTestCase;
import junitframeworkTestSuite;
public class JunitB extends TestCase{
/** *//**定義你需要測試的類及用到的變量*****************************/
public Hashtable hasha=null;//
public Hashtable hashb=null;
/** *//*******************************************************/
public JunitB(String name){
super(name);//創建子類
}
/** *//**用setUp進行初始化操作*/
protected void setUp() throws Exception {
supersetUp();
hasha =new Hashtable();//這裡
}
/** *//**用tearDown來銷毀所占用的資源*/
protected void tearDown() throws Exception {
supertearDown();
//Systemgc();
}
/** *//**寫一個測試方法斷言期望的結果**/
public void testBodyStatus() {
//hasha =new Hashtable();//有此句後也可去掉setUp() tearDown()
assertNotNull(hasha);
//hashaput(lets try again);//testerror版
assertTrue(hashaisEmpty());//期望為空
}
/** *//**再寫一個測試方法斷言期望的結果**/
public void testBodySame() {
//hashb=(Hashtable)hashaclone(); //testerror版
hashb=hasha; //testOK 版
AssertassertSame(hashahashb);
}
/** *//**suite()方法使用反射動態的創建一個包含所有的testXxxx方法的測試套件**/
public static TestSuite suite() {
return new TestSuite(JunitBclass);
}
/** *//****寫一個main()運行測試*****************/
public static void main(String args[]) {
junittextuiTestRunnerrun(suite());//以文本運行器的方式方便的
//junitswinguiTestRunnerrun(JunitBclass);
}
}
以上為JUNIT的簡單測試樣例
不需過多考慮性能及規范
但資深JAVA開發者建議
一
不要在測試用例的構造函數中做初始化
答案是重載測試用例的setUp()方法進行初始化
二
不要假定測試用例中測試的執行次序
好的習慣是保持測試之間的獨立性
使得它們在任何次序下執行的結果都是相同的
三
測試要避免人工干預
經驗二講的是不同的測試要避免相關性
而經驗三講的其實就是測試要避免自相關
四
在子類中調用父類的setUp() 和tearDown()
五
不要硬性規定數據文件的路徑
六
把測試的代碼和被測的代碼放在同樣的目錄下
七
正確命名測試
八
書寫測試時要考慮地區和國家設置
九
利用Junit 的自動異常處理書寫簡潔的測試代碼
事實上在Junit 中使用try
catch 來捕獲異常是沒有必要的
Junit 會自動捕獲異常
那些沒有被捕獲的異常就被當成錯誤處理
十
充分利用Junit 的assert/fail 方法
assertSame()用來測試兩個引用是否指向同一個對象
assertEquals()用來測試兩個對象是否相等
十一
確保測試代碼與時間無關
十二
使用文檔生成器做測試文檔
From:http://tw.wingwit.com/Article/program/Java/ky/201311/28790.html