第一章: junit起步
1.2從頭開始
Junit的基本原則: 若程序的某項功能沒有經過測試,那么該功能基本等于不存在。
1.3理解單元測試框架
所有測試都遵守的3條原則
1.每個單元測試都必須獨立于其他單元測試而運行;
2.必須以單元測試為單位來檢測和報告錯誤;
3.必須易于定義要進行哪些單元測試;
1.4安裝junit
步驟:
1. 從junit.org下載新版本的junit ,在第二步中稱http://junit.zip
2. 將junit解壓到某個目錄
3. 略。。。
1.5用junit測試
Junit很多功能可以簡化測試的編寫和運行。在本書中很多地方都講述了這些功能在實踐中的運用
1. 可供選擇的front-end或者test-runner,用來顯示你測試的結果;
2. 用單獨的ClassLoader來運行每個單元測試,以避免發生副作用;
3. 標準的資源初始化和回收方法
4. 各種不通的assert方法,讓你檢查測試結果的操作變得更容易
5. 同流行工具比如ant和maven,和開發工具eclipse和jbuild的整合
1.6 小結
每個開發者都會執行某種類型的測試,以確保新寫的代碼能正常工作。使用自動單元測試的開發者能夠根據需要
重復執行這些測試,以確保代碼在后面依然正常工作
手工編寫單元測試并非難事,但是當測試變得更為復雜,編寫和維護測試變得比較困難了,junit是一個單元測試框架,
使得創建,運行,維護單元測試變得簡單。
第二章:探索junit
問題: 我們怎么運行多個TestCase?我們用什么運行這些測試?
在本章,我們將概覽junit的核心類:TestCase ,TestSuite 以及BaseTestRunner。然后我們將更細致的探索各種TestRunner
和TestSuite,之后回頭拜訪我們的老朋友TestCase,后我們將觀察這些核心類是如何工作的
2.1探索junit的核心
當你需要一次執行多個TestCase時,你可以創建TestSuite
TestCase+testsuite +testrunner =testResult (Junit成員三重唱,共同產生測試結果)
testCase (測試用例):
擴展了junit的TestCase類的類,它以TestXXX方法的形式包含一個或多個測試。一個TestCase把具有公共行為的測試歸入一組,
testsuite (測試集合)
一組測試,一個TestSuite把多個相關測試歸入一組的便捷方式。
TestRunner(測試運行器)
執行TestSuite的程序,Junit提供了幾個TestRunner,你可以用它來執行你的測試,沒有TestRunner接口,只有一個所有TestRunner
都繼承的BaseTestRunner,因此當我們編寫TestRunner的時候,我們實際上是指任何繼承BaseTestRunner 的Test Runner的類。
7個Junit核心類和接口
Assert 當條件成立時,assert方法保持沉默,但若條件不成立,則拋出異常。
TestResult TestResult包含了測試中所有的錯誤或者失敗
Test 可以運行Test并把結果傳遞給TestResult
TestListener 測試中若產生事件(開始,結束,錯誤,失敗)
TestCase 定義了可以運行多項測試的環境
TestSuite 運行一組TestCase它是Test的集合
TestRunner TestRunner用來啟動測試的用戶界面,BaseTestRunner是所有TestRunner的超類
2.2 用Test Runner來運行測試
2.2.1選擇TestRunner
Keep the bar green to keep the code clean
Junit 定義了3個TestRunner類,一個用于文本控制臺,一個用于Swing,甚至還有一個AWT的
2.2.2定義你自己的TestRunner
2.3用TestSuite來組合測試
TestSuite被設計成可以運行一個或多個TestCase,TestRunner負責啟動TestSuite,而要運行哪些TestCase由TestSuite決定
2.3.1 運行自動TestSuite
2.3.2編寫你自己的TestSuite
TestCase 和TestSuite 都實現了Test接口。
Junit 的設計目標:
用Junit創建的測試必須具有長久的價值。若你持續的運行測試,那么你把測試的投資小化,并把投資的回報大化了。
典型的TestAll類
1. 創建一個Suite方法,以便調用所有其他的Test或Suite.
2. 給這個TestSuite一個標識,以便區分.
3. 可以調用addTestSuite方法來增加想要一起運行的TestCase對象或者TestSuite對象.
2.4 用TestResult來收集參數.
TestResult負責收集TestCase的執行結果.TestResult儲存了所有的測試的詳細情況.是通過還是失敗.
TestRunner使用TestResult來報告測試結果.如果TestResult中沒有TestFailure對象,那么代碼是干凈的.