JUnit是什么? 軟件測試
JUnit是一個(gè)開(kāi)發(fā)源代碼的Java測試框架,用于編寫(xiě)和運行可重復的測試。他是用于單元測試框架體系xUnit的一個(gè)實(shí)例(用于java語(yǔ)言)。它包括以下特性:
1、用于測試期望結果的斷言(Assertion)
2、用于共享共同測試數據的測試工具
3、用于方便的組織和運行測試的測試套件
4、圖形和文本的測試運行器
JUnit最初是由Erich Gamma(GoF之一)和Kent Beck(xp和refactor的先驅之一)編寫(xiě)的,需要說(shuō)明的是JUnit一般是用來(lái)進(jìn)行單元測試的,因此需要了解被測試代碼的內部結構(即所謂的白盒測試),另外junit是在xp編程和重構(refactor)中被極力推薦使用的工具,因為在實(shí)現自動(dòng)單元測試的情況下可以大大的提高開(kāi)發(fā)的效率,但是實(shí)際上編寫(xiě)測試代碼也是需要耗費很多的時(shí)間和精力的,那么使用這個(gè)東東好處到底在哪里呢?筆者認為是這樣的:
1、對于xp編程而言,要求在編寫(xiě)代碼之前先寫(xiě)測試,這樣可以強制你在寫(xiě)代碼之前好好的思考代碼(方法)的功能和邏輯,否則編寫(xiě)的代碼很不穩定,那么你需要同時(shí)維護測試代碼和實(shí)際代碼,這個(gè)工作量就會(huì )大大增加。因此在xp編程中,基本過(guò)程是這樣的:構思-》編寫(xiě)測試代碼-》編寫(xiě)代碼-》測試,而且編寫(xiě)測試和編寫(xiě)代碼都是增量式的,寫(xiě)一點(diǎn)測一點(diǎn),在編寫(xiě)以后的代碼中如果發(fā)現問(wèn)題可以較塊的追蹤到問(wèn)題的原因,減小回歸錯誤的糾錯難度。
2、對于重構而言,其好處和xp編程中是類(lèi)似的,因為重構也是要求改一點(diǎn)測一點(diǎn),減少回歸錯誤造成的時(shí)間消耗。
3、對于非以上兩種情況,我們在開(kāi)發(fā)的時(shí)候使用junit寫(xiě)一些適當的測試也是有必要的,因為一般我們也是需要編寫(xiě)測試的代碼的,可能原來(lái)不是使用的junit,如果使用junit,而且針對接口(方法)編寫(xiě)測試代碼會(huì )減少以后的維護工作,例如以后對方法內部的修改(這個(gè)就是相當于重構的工作了)。另外就是因為junit有斷言功能,如果測試結果不通過(guò)會(huì )告訴我們那個(gè)測試不通過(guò),為什么,而如果是想以前的一般做法是寫(xiě)一些測試代碼看其輸出結果,然后再由自己來(lái)判斷結果使用正確,使用junit的好處就是這個(gè)結果是否正確的判斷是它來(lái)完成的,我們只需要看看它告訴我們結果是否正確就可以了,在一般情況下會(huì )大大提高效率。
安裝JUnit
安裝很簡(jiǎn)單,先到以下地址下載一個(gè)最新的zip包: http://download.sourceforge.net/junit/
下載完以后解壓縮到你喜歡的目錄下,假設是JUNIT_HOME,然后將JUNIT_HOME下的junit.jar包加到你的系統的CLASSPATH環(huán)境變量中,對于IDE環(huán)境,對于需要用到的junit的項目增加到lib中,其設置不同的IDE有不同的設置,這里不多講。
如何使用JUnit寫(xiě)測試?
最簡(jiǎn)單的范例如下:
1、創(chuàng )建一個(gè)TestCase的子類(lèi)
package junitfaq;
import java.util.*;
import junit.framework.*;
public class SimpleTest extends TestCase {
public SimpleTest(String name) {
super(name);
}
2、寫(xiě)一個(gè)測試方法斷言期望的結果
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/