要運行此測試實例,將源文件(IsoDate.java和IsoDateTest.java)拷貝到Junit的安裝目錄下,打開終端,進入該目錄,然后輸入以下命令行(如果你正在使用UNIX):
export CLASSPATH=.:./junit.jar
javac *.java
或者,如果你正在Windows,輸入以下命令行
set CLASSPATH=.;junit.jar
javac *.java
這些命令行對CLASSPATH進行設置,使其包含當前目錄中的類和junit.jar庫,并編譯Java源文件。
要在終端上運行該測試,輸入以下命令行:
java junit.textui.TestRunner IsoDateTest
此命令行將運行該測試,并在圖 1所示的控制臺上顯示測試結果。
才在此工具可以運行類名被傳遞到命令行中的單個測試。注意:只有對命令行的后測試才在考慮之內,以前的測試都被忽略了。(看起來像一個程序錯誤,是吧?)
JUnit還提供了利用AWT(抽象窗口工具包)或Swing運行測試的圖形界面。為了利用此圖形界面運行測試,在終端上輸入以下命令行:
java junit.awtui.TestRunner IsoDateTest
或者使用Swing界面:
java junit.swingui.TestRunner IsoDateTest
此命令行將顯示圖 2所示的界面。要選擇一個測試并使其運行,點擊帶有三個點的按鈕。這將顯示CLASSPATH(還有測試包,但我們將在后面討論)中所有測試的列表。要運行測試,點擊"Run"按鈕。測試應當正確運行,并在圖 2所示的界面中顯示結果。
在此界面中你應當選中復選框"Reload Classes Every Run",以便運行器在運行測試類之前對它們進行重新加載。這樣可以方便地編輯、編譯并運行測試,而不需要每次都啟動圖形界面。
在該復選框下面是一個進度條,在運行較大的測試包時,該進度條非常有用。運行的測試、錯誤和失敗的數量都會在進度條下面顯示出來。再下面是一個失敗列表和一個測試層次結構。失敗消息顯示在底部。通過點擊Test Hierarchy(測試層次結構)面板,然后再點擊窗口右上角的"Run"按鈕,即可運行單個測試方法。請記住,使用命令行工具是不可能做到這些的。
注意,當運行工具來啟動測試類時,這些類必須存在于CLASSPATH中。但是如果測試類存儲在jar文件中,那么即使這些jar文件存在于CLASSPATH中,JUnit也不能找到這些測試類。
這并不是一種啟動測試的方便方法,但幸運的是,JUnit已經被集成到了其他工具(如Ant和Oracle9i JDeveloper)中,以幫助你開發(fā)測試并使測試能夠自動運行。
編寫Junit測試實例
你已經看到了測試類的源代碼對IsoDate實施進行了詢問。現在讓我們來研究這樣的測試文件的實施。
測試實例由junit.frameword.TestCase繼承而來是為了利用JUnit框架的優(yōu)點。這個類的名字是在被測試類的名字上附加"Test"。因為你正在測試一個名為IsoDate的類,所以其測試類的名字是IsoDateTest。為了訪問除私有方法之外的所有方法,這個類通常與被測類在同一個包中。
注意,你必須為你希望測試的在類中定義的每個方法都編寫一個方法。你要測試構造器或使用了ISO日期格式的方法,因此你將需要為以ISO格式的字符串作為參數的構造器和toString()方法編寫一個測試方法。其命名方式與測試類的命名方式類似:在被測試方法(或構造器)前面附加"test"。