使用最流行的開放資源測試框架之一學習單元測試基礎。
使用JUnit可以大量減少java代碼中程序錯誤的個數,JUnit是一種流行的單元測試框架,用于在發布代碼之前對其進行單元測試?,F在讓我們來具體研究如何使用諸如JUnit、Ant和Oracle9i JDeveloper等工具來編寫和運行單元測試。
為什么使用JUnit?
多數開發人員都同意在發布代碼之前應當對其進行測試,并利用工具進行回歸(regression)測試。做這項工作的一個簡單方法是在所有Java類中以main()方法實施測試。例如,假設使用ISO格式(這意味著有一個以這一格式作為參數的構造器和返回一個格式化的ISO字符串的toString()方法)以及一個GMT時區來編寫一個Date的子類。清單1 就是這個類的一個簡單實現。
不過,這種測試方法并不需要單元測試限定語(qualifier),原因如下:
JUnit框架就是設計用來解決這些問題的。這一框架主要是所有測試實例(稱為"TestCase")的一個父類,并提供工具來運行所編寫的測試、生成報告及定義測試包(test suite)。
讓我們為IsoDate類編寫一個測試:這個IsoDateTest類類似于:
import java.text.ParseException;import junit.framework.TestCase;/** * Test case for <code>IsoDate</code>. */public class IsoDateTest extends TestCase { public void testIsoDate() throws Exception { IsoDate epoch=new IsoDate( "1970-01-01 00:00:00 GMT"); assertEquals(0,epoch.getTime()); IsoDate eon=new IsoDate( "2001-09-09 01:46:40 GMT"); assertEquals( 1000000000L*1000,eon.getTime()); } public void testToString() throws ParseException { IsoDate epoch=new IsoDate(0); assertEquals("1970-01-01 00:00:00 GMT",epoch.toString()); IsoDate eon=new IsoDate( 1000000000L*1000); assertEquals("2001-09-09 01:46:40 GMT",eon.toString()); }}
本例中要注重的重點是已經編寫了一個用于測試的獨立類,因此可以對這些文件進行過濾,以避免將這一代碼嵌入到將要發布的文檔中。另外,本例還為你希望在你的代碼中測試的每個方法編寫了一個專用測試方法,因此你將確切地知道需要對哪些方法進行測試、哪些方法工作正常以及哪些方法工作不正常。假如在編寫實施文檔之前已經編寫了該測試,你就可以利用它來衡量工作的進展情況。
安裝并運行JUnit
要運行此示例測試實例,必須首先下載并安裝JUnit。JUnit的最新版本可以在JUnit的網站 www.junit.org免費下載。該軟件包很?。s400KB),但其中包括了源代碼和文檔。要安裝此程序,應首先對該軟件包進行解壓縮(junitxxx.zip)。它將創建一個目錄(junitxxx),在此目錄下有文檔(在doc目錄中)、框架的應用編程接口(API)文檔(在javadoc目錄中)、運行程序的庫文件(junit.jar)以及示例測試實例(在junit目錄中)。截至我撰寫本文時,JUnit的最新版本為3.8.1,我是在此版本上對示例進行測試的。
要運行此測試實例,將源文件(IsoDate.java和IsoDateTest.java)拷貝到Junit的安裝目錄下,打開終端,進入該目錄,然后輸入以下命令行(假如你正在使用UNIX):
eXPort CLASSPATH=.:./junit.jarjavac *.java或者,假如你正在Windows,輸入以下命令行set CLASSPATH=.;junit.jarjavac *.java
這些命令行對CLASSPATH進行設置,使其包含當前目錄中的類和junit.jar庫,并編譯Java源文件。
要在終端上運行該測試,輸入以下命令行:
新聞熱點
疑難解答