JUnit 測試框架
JUnit 現在是基于 Java 應用軟件單元測試的非官方標準。盡管 Junit.org Web 網站提供了更多有壓縮力的信息和指南(請參見 參考資源),這個部分還是向您提供了 JUnit 測試框架的總的觀點。包含 JUnit 的裝配 APIs 的主要目的是使 Java 單元測試用例的編寫更快更簡單。最低限度,一個 JUnit 測試用例有一個如 列表 1代碼中所示的常用結構。
列表 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);
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 方法簽名的范例。