您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
Junit--Junit In Action 筆記
作者:網絡轉載 發(fā)布時間:[ 2013/7/8 11:23:18 ] 推薦標簽:

Junit區(qū)分失敗和錯誤.失敗是可以預期的,代碼中的改變不會造成斷言失敗.你只要修正代碼,斷言可以通過.
但是錯誤(比如常規(guī)程序拋出的異常)則是測試時不能預料的.
當遇到錯誤,好的分析步驟是:
            檢查環(huán)境;
            檢查測試;
            檢查代碼;
2.5 用TestListener來觀察結果
TestResult收集了測試的信息,TestRunner負責報告信息. Junit 提供了TestListener接口,以幫助對象訪問TestResult
并創(chuàng)建有用的報告.
TestRunner實現了TestListener,很多特定的Junit擴展也實現了TestListener 可以有任意數量的TestListener向Junit
框架注冊.這些TestListener可以根據TestResult提供的信息做它需要做的任何事情

2.6 用TestCase來工作
概括的說,Junit的工作過程是由TestRunner來運行包含一個或多個TestCase的TestSuite,但是在常規(guī)工作中,你只和
TestCase打交道.
典型的TestCase包含兩個部件:fixture和單元測試
2.6.1 用Fixture來管理資源
有些測試需要一些資源,要把這些資源配置好是一件麻煩事,比如像數據庫連接這樣的資源是典型的例子.
把通用的資源配置代碼放在測試里可能不是一個好主意,
TestCase通過setUp 和tearDown方法來創(chuàng)建和銷毀fixture.TestCase會在運行前調用setUp,并在每個測試完成后調用tearDown
把不止一個測試方法放入同一個TestCase的好處是可以共享Fixture代碼.
Junit通過Assert接口提供的工具方法來復用代碼.
2.6.2 創(chuàng)建單元測試方法
使用Fixture是復用代碼的好方法,但是還有很多常見的測試任務,很多測試都會重復執(zhí)行這些任務,Junit框架用一組assert方法封裝了
常見的測試任務.這些assert方法可以極大的簡化單元測試的編寫.
Assert超類型
TestCase成員
除了Assert提供的方法之外,TestCase還實現了10個它自己的方法,
保持測試的獨立性
你在開始編寫自己的測試的時候,記住第一條規(guī)則:每個單元測試都必須獨立于其他單元測試而運行.單元測試必須能以任何順序來進行,一項測試不能依賴與前面的測試造成的改變,下面是會相互依賴的測試所造成的問題:
不具可移植性
難以維護
不夠清晰

2.7創(chuàng)建TestCaculator的全過程


2.7.1創(chuàng)建TestSuite
                TestRunner一開始尋找TestCaculate類中的suite方法.若找到了直接調用它,這個suite方法會創(chuàng)建不同的
TestCase類,并把他們加入到不同的TestSuite.
                因為TestCaculate沒有suite方法,所以TestRunner創(chuàng)建了一個默認的TestSuite對象.

2.7.2 創(chuàng)建TestResult


步驟如下:
1. 在圖中1處,TestRunner實例化了一個TestResult對象,在測試順序執(zhí)行的時候,這個對象將用來存放測試結果;
2. TestRunner像TestResult注冊測試,這樣在執(zhí)行測試的過程中TestRunner可以收到各種事件,這是Observe模式的典型例子,TestResult會廣播如下方法:
測試開始(startTest);
測試失敗(addFailure);
測試拋出未被預期的異常(addErr);
         測試結束(endTest);

3. 知道了這些事件,TestRunner可以隨著測試的進行而顯示進度條,并且在測試失敗和錯誤的時候顯示出來.
4. TestRunner通過調用TestSuite的run方法開始測試.
5. Testsuite為它擁有的每個TestCase實例調用Run(TestResult)方法.
6. TestCase通過傳遞給它的TestTesult實例來運行run(Test)方法,并把自身作為參數傳遞給Run方法,這樣TestResult梢后用runBare回調它
2.7.3 執(zhí)行測試方法

圖2.10描繪了執(zhí)行單個測試方法的步驟.步驟如下:
1. 在圖中5處,runBare方法順序執(zhí)行setup,testAdd,和tearDown方法.
2. 如果在執(zhí)行這3個方法的過程中發(fā)生了任何失敗和錯誤,那么TestResult會分別調用addFailure和addError
來通知所有的Listener
3. 如果發(fā)生任何錯誤,那么TestRunner會列出這些錯誤,否則進度條是綠色的,從而讓你知道沒有問題.
4. 當tearDown執(zhí)行完成后,整個測試過程完成了,Testresult會調用endTest把這個結果通知給所有的listener.
2.7.4 復習完整的Junit生命周期

第三章:Junit實例
Tests are the programmer’s stone, transmuting fear into boredom.
測試是程序員之石,把恐懼變成厭倦;
3.1 引入Controller組件
3.1.1設計接口
public interface Request {
      String getName();
}
public interface Response {
    
}
public interface RequestHandler {
      public Response process(Request request) throws Exception;
}
public interface Controller {
      Response processRequest(Request request);
      void addHandler(Request request,RequestHandler handler);
}

上一頁1234567下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd