測試對于保證軟件開(kāi)發(fā)質(zhì)量有著(zhù)非常重要的作用,
單元測試更是必不可少,JUnit是一個(gè)非常強大的單元測試包,可以對一個(gè)/多個(gè)類(lèi)的單個(gè)/多個(gè)方法測試,還可以將不同的TestCase組合成TestSuit,使測試任務(wù)自動(dòng)化。Eclipse同樣集成了JUnit,可以非常方便地編寫(xiě)TestCase。
我們創(chuàng )建一個(gè)Java工程,添加一個(gè)example.Hello類(lèi),首先我們給Hello類(lèi)添加一個(gè)abs()方法,作用是返回絕對值:
下一步,我們準備對這個(gè)方法進(jìn)行測試,確保功能正常。選中Hello.java,右鍵點(diǎn)擊,選擇New->JUnit Test Case:
Eclipse會(huì )
詢(xún)問(wèn)是否添加junit.jar包,確定后新建一個(gè)HelloTest類(lèi),用來(lái)測試Hello類(lèi)。
選中setUp()和tearDown(),然后點(diǎn)擊“Next”:
選擇要測試的方法,我們選中abs(int)方法,完成后在HelloTest.java中輸入:
JUnit會(huì )以以下順序執行測試:(
大致的代碼)
try { HelloTest test = new HelloTest(); // 建立測試類(lèi)實(shí)例 test.setUp(); // 初始化測試環(huán)境 test.testAbs(); // 測試某個(gè)方法 test.tearDown(); // 清理資源 } catch…
|
setUp()是建立測試環(huán)境,這里創(chuàng )建一個(gè)Hello類(lèi)的實(shí)例;tearDown()用于清理資源,如釋放打開(kāi)的文件等等。以test開(kāi)頭的方法被認 為是測試方法,JUnit會(huì )依次執行testXxx()方法。在testAbs()方法中,我們對abs()的測試分別選擇正數,負數和0,如果方法返回 值與期待結果相同,則assertEquals不會(huì )產(chǎn)生異常。
如果有多個(gè)testXxx方法,JUnit會(huì )創(chuàng )建多個(gè)XxxTest實(shí)例,每次運行一個(gè)testXxx方法,setUp()和tearDown()會(huì )在testXxx前后被調用,因此,不要在一個(gè)testA()中依賴(lài)testB()。
直接運行Run->Run As->JUnit Test,就可以看到JUnit測試結果:
綠色表示測試通過(guò),只要有1個(gè)測試未通過(guò),就會(huì )顯示紅色并列出未通過(guò)測試的方法??梢栽噲D改變abs()的代碼,故意返回錯誤的結果(比如return n+1;),然后再運行JUnit就會(huì )報告錯誤。
如果沒(méi)有JUnit面板,選擇Window->Show
View->Other,打開(kāi)JUnit的View:
JUnit通過(guò)單元測試,能在開(kāi)發(fā)階段就找出許多Bug,并且,多個(gè)Test Case可以組合成Test Suite,讓整個(gè)測試自動(dòng)完成,尤其適合于XP方法。每增加一個(gè)小的新功能或者對代碼進(jìn)行了小的修改,就立刻運行一遍T(mén)est Suite,確保新增和修改的代碼不會(huì )破壞原有的功能,大大增強軟件的可維護性,避免代碼逐漸“腐爛”。
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請
點(diǎn)擊舉報。