列表 1. JUnit 常用結構
1. Import junit.framework.TestCase;
2.
3. Public class AddJavaTest extends TestCase {
4.
5. protected void setUp() throws Exception
6. {
7. // create some object
8. }
9. protected void tearDown() throws Exception
10. {
11. //release any recourse that was created in 12. setup()
13. }
14. public AddJavaTest (String name){
15. super (name); [Page]
16.
17. public void testSimpleAddition (){
18. assertTrue (expect == actual);
19. }
}
如 列表 1 第三行所示,所有的 Java 測試用例類都必須擴展junit.framework.TestCase ,它是 JUnit 的核心類。在第五行中,TestCase.setUp() 被重載,從而對測試下的對象進行初始化或者實例化。相反,在第九行中, TestCase.tearDown() 被重載,是釋放任何定位資源的。在第十四行中,為了在日志中顯示這個測試用例的名稱,一個測試用例必須有一個可以將自變量傳遞到它的父類 (TestCase) 的專門的串參數構造器。
測試用例必須聲明為 public void ,并且不帶行參。此外,合適的是測試方法名稱都有一個 \"test\" 前綴,這樣測試運行人員就可以自動地執行所有的方法。最后,在第十八行的斷言語句中,決定了這個測試用例的成功與失敗。這個方法 assert在這個特殊的測試情景下,將期望值與實際值進行了對比。您可以利用 fail() 方法強迫這個測試用例失敗,例如您想要迫使一個操作暫停。JUnit 提供了一個額外的決定測試用例成功或者失敗的機制。表格 1 顯示了不同 assert 和 fail 方法簽名的范例。
表格 1. Assert 方法
static voidassertEquals (boolean expected, boolean actual)
Asserts that two booleans are equal.
static voidassertFalse (boolean condition)
Asserts that a condition is false.
static voidassertNotNull (java.lang.Object object)
Asserts that an object isn’t null.
static voidassertNotSame (java.lang.Object expected, java.lang.Object actual)
Asserts that two objects refer to the same object.
static voidassertNull (java.lang.Object object)
Asserts that an object is null.
static voidassertSame
(java.lang.Object expected, java.lang.Object actual)
Asserts that two objects refer to the same object.
static voidassertTrue (boolean condition)
Asserts that a condition is true.
static voidfail (java.lang.String message)
Fails a test with the given message.
static voidfailNotEquals
(java.lang.String message, java.lang.Object expected, java.lang.Object actual)
private static voidfailNotSame
(java.lang.String message, java.lang.Object expected, java.lang.Object actual)
private static voidfailNotEquals
(java.lang.String message, java.lang.Object expected, java.lang.Object actual)
private static voidfailSame (java.lang.String message)
(package private) static java.lang.Stringformat (java.lang.String message, java.lang.Object expected, java.lang.Object actual) [Page]
注意: Assert 類包含許多不同的重載方法。下面是一個完全重載 Assert 類方法的完整列表,請看頁面 JUnit.org(參見 參考資源)。
JUnit 提供了一個 TestRunner 類來執行測試用例。其實測試用例的方法多種多樣。測試報告是利用圖形和文本來顯示的。要獲取最受歡迎的圖形結果,可以利用 junit.swingui.TestRunner 和 junit.awtgui.TestRunner。其次受歡迎的基于文本的結果,可以 利用 junit.textui.TestRunner 來取代。
此外, JUnit 測試用例可以從 Rational Application Developer 的IDE 運行或者在 Ant 構成腳本中自動運行。
JUnit 還通過利用 junit.framework.TestSuite 類提供了一種將測試歸組為測試套件的方法。一個測試套件是由您能夠在相同時期運行的相關測試組成的。下面有兩種 JUnit 運行測試比較便利的方法:
對于第一種方法,您可以通過使用這個命令將測試用例傳遞到 TestSuite 構造器:
TestSuite suite= new TestSuite(testAddJava.class) 在這種情況下,TestRunner 將所有帶測試前綴的測試程序挑選出來,然后自動運行每一個測試用例。
另一個可選的方法是,通過使用 TestSuite.addTest 方法添加每個測試用例:
TestSuite suite = new TestSuite(); suite.addTest(new AddJavaTest(\"testSimpleAddition\"));
JUnitEE 測試框架
JUnit 提供了一個對客戶端 Java 應用軟件進行單元測試的有效且簡便的方法,但是它仍有一些局限性;因此,在每一個應用軟件服務器的容器中進行測試變成了一個冗長且乏味的過程。IBM Rational Application Developer 平臺提供的 Web-based Universal Test Client (UTC) 特性為 Enterprise JavaBeans (EJBs) 提供了一個無縫的完整的單元測試機制。然而,Rational Application Developer UTC 是一個交互式的單元測試機制,因此當進行自動單元測試時它顯得有些不足。
JUnitEE 測試框架就是解決這些局限性的,同時還處理這個冗長而乏味的過程。這個框架延伸了標準的 JUnit,從而使它能夠在應用服務器容器中執行單元測試。它在單元測試軟件的 J2EE Web 模塊中配置,利用 TestRunner 輸出 HTML 或者 XML 測試結果。它還包含一個登陸到 JUnit 測試用例登陸口的 TestServlet。因此,根據 JUnitEE.org 的說法, 將您的測試工具構建為一個標準的 J2EE Web 有以下幾點好處: 測試在 J2EE Web 模塊中已經打包(以 WAR 文件的形式),這樣便于部署和執行。