古詩詞大全網 - 成語用法 - JUnit入門及應用

JUnit入門及應用

  相關概念 JUnit 是壹個開發源代碼的Java測試框架 用於編寫和運行可重復的測試 它是用於單元測試框架體系xUnit的壹個實例(用於java語言) 主要用於白盒測試 回歸測試 白盒測試 把測試對象看作壹個打開的盒子 程序內部的邏輯結構和其他信息對測試人 員是公開的 回歸測試 軟件或環境的修復或更正後的再測試 自動測試工具對這類測試尤其有用 單元測試 最小粒度的測試 以測試某個功能或代碼塊 壹般由程序員來做 因為它需要知道內部程序設計和編碼的細節 單元測試 ? 單元測試的好處 提高開發速度 測試是以自動化方式執行的 提升了測試代碼的執行效率 提高軟件代碼質量 它使用小版本發布至集成 便於實現人員除錯 同時引入重構概念 讓代碼更幹凈和富有彈性 提升系統的可信賴度 它是回歸測試的壹種 支持修復或更正後的 再測試 可確保代碼的正確性 ? 單元測試的針對對象 面向過程的軟件開發針對過程 面向對象的軟件開發針對對象 可以做類測試 功能測試 接口測試(最常用於測試類中的方法) ? 單元測試工具和框架 目前的最流行的單元測試工具是xUnit系列框架 常用的根據語言不同分為JUnit(java) CppUnit(C++) DUnit (Delphi ) ) PhpUnit(Php )等等 單元測試框架的第壹個和最傑出的應用就是由Erich Gamma (《設計模式》的作者)和Kent Beck(XP(Extreme Programming)的創始人 )提供的開放源代碼的JUnit ? Junit入門簡介 ? JUnit的好處和JUnit測試編寫原則 使用JUnit的好處 可以使測試代碼與產品代碼分開 針對某壹個類的測試代碼通過較少的改動便可以應用於另壹個類的測試 易於集成到測試人員的構建過程中 JUnit和Ant的結合可以實施增量開發 JUnit是公開源代碼的 可以進行二次開發 可以方便地對JUnit進行擴展 ?JUnit測試編寫原則 簡化測試的編寫 這種簡化包括測試框架的學習和實際測試單元的編寫 使測試單元保持持久性 可以利用既有的測試來編寫相關的測試 ? JUnit的特征 使用斷言方法判斷期望值和實際值差異 返回Boolean值 測試驅動設備使用***同的初始化變量或者實例 測試包結構便於組織和集成運行 支持圖型交互模式和文本交互模式 ? JUnit框架組成 對測試目標進行測試的方法與過程集合 可稱為測試用例(TestCase) 測試用例的集合 可容納多個測試用例(TestCase) 將其稱作測試包(TestSuite) 測試結果的描述與記錄 (TestResult) 測試過程中的事件監聽者(TestListener) 每壹個測試方法所發生的與預期不壹致狀況的描述 稱其測試失敗元素(TestFailure) JUnit Framework中的出錯異常(AssertionFailedError) ? JUnit框架是壹個典型的Composite模式 TestSuite可以容納任何派生自Test的對象 當調用TestSuite對象的run()方法是 會遍歷自己容納的對象 逐個調用它們的run()方法

  JUnit中常用的接口和類 Test接口 運行測試和收集測試結果 ? Test接口使用了Composite設計模式 是單獨測試用例(TestCase) 聚合測試模式(TestSuite)及測試擴展(TestDecorator)的***同接口 它的public int countTestCases()方法 用來統計測試時有多少個TestCase 另外壹個方法就是public void run( TestResult ) TestResult是實例接受測試結果 run方法執行本次測試 TestCase抽象類 定義測試中固定方法 ? TestCase是Test接口的抽象實現 (不能被實例化 只能被繼承)其構造函數TestCase(string name)根據輸入的測試名稱name創建壹個測試實例 由於每壹個TestCase在創建時都要有壹個名稱 若測試失敗了 便可識別出是哪個測試失敗 TestCase類中包含的setUp() tearDown()方法 ? setUp()方法集中初始化測試所需的所有變量和實例 並且在依次調用測試類中的每個測試方法之前再次執行setUp()方法 tearDown()方法則是在每個測試方法之後 釋放測試程序方法中引用的變量和實例 ? 開發人員編寫測試用例時 只需繼承TestCase 來完成run方法即可 然後JUnit獲得測試用例 執行它的run方法 把測試結果記錄在TestResult之中 Assert靜態類 壹系列斷言方法的集合 ? Assert包含了壹組靜態的測試方法 用於期望值和實際值比對是否正確 即測試失敗 Assert類就會拋出壹AssertionFailedError異常 JUnit測試框架將這種錯誤歸入Failes並加以記錄 同時標誌為未通過測試 如果該類方法中指定壹個String類型的傳參則該參數將被做為AssertionFailedError異常的標識信息 告訴測試人員改異常的詳細信息 ? JUnit 提供了 大類 組斷言方法 包括基礎斷言 數字斷言 字符斷言 布爾斷言 對象斷言 其中assertEquals(Object expcted Object actual)內部邏輯判斷使用equals()方法 這表明斷言兩個實例的內部哈希值是否相等時 最好使用該方法對相應類實例的值進行比較 ? 而assertSame(Object expected Object actual)內部邏輯判斷使用了Java運算符 == 這表明該斷言判斷兩個實例是否來自於同壹個引用(Reference) 最好使用該方法對不同類的實例的值進行比對 asserEquals(String message String expected String actual)該方法對兩個字符串進行邏輯比對 如果不匹配則顯示著兩個字符串有差異的地方 ? ComparisonFailure類提供兩個字符串的比對 不匹配則給出詳細的差異字符 TestSuite測試包類?多個測試的組合 ? TestSuite類負責組裝多個Test Cases 待測得類中可能包括了對被測類的多個測試 而TestSuit負責收集這些測試 使我們可以在壹個測試中 完成全部的對被測類的多個測試 TestSuite類實現了Test接口 且可以包含其它的TestSuites 它可以處理加入Test時的所有拋出的異常 ?TestSuite處理測試用例有 個規約(否則會被拒絕執行測試) &sup ; 測試用例必須是公有類(Public) &sup ; 用例必須繼承與TestCase類 &sup ; 測試用例的測試方法必須是公有的( Public ) &sup ; 測試用例的測試方法必須被聲明為Void &sup ; 測試用例中測試方法的前置名詞必須是test &sup ; 測試用例中測試方法誤任何傳遞參數 TestResult結果類和其它類與接口 ? TestResult結果類集合了任意測試累加結果 通過TestResult實例傳遞個每個測試的Run()方法 TestResult在執行TestCase是如果失敗會異常拋出 TestListener接口是個事件監聽規約 可供TestRunner類使用 它通知listener的對象相關事件 方法包括測試開始startTest(Test test) 測試結束endTest(Test test) 錯誤 增加異常addError(Test test Throwable t)和增加失敗addFailure(Test test AssertionFailedError t) ? TestFailure失敗類是個 失敗 狀況的收集類 解釋每次測試執行過程中出現的異常情況 其toString()方法返回 失敗 狀況的簡要描述

lishixinzhi/Article/program/Java/ky/201311/28693