您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
Junit內部解密
作者:網絡轉載 發(fā)布時間:[ 2013/4/11 13:36:09 ] 推薦標簽:

   Junit內部解密之: 單元測試用例運行的全過程

  我們以一個非常簡單的TestCalculator類為例,只有一個測試方法:

  Public class TestCalculator extends TestCase

  {

  Public void testAdd()

  {

  Calculator calculator = new Calculator();

  Double result = calculator.add(10, 50);

  assertEquals(60, result);

  }

  }

  當我們使用Run in Junit 的時候,之前說到過的幾個核心類之間是怎么運行的呢?我們先看下基本過程:

  TestRunner啟動界面框 —》創(chuàng)建一個TestSuite ––》創(chuàng)建一個TestResult—》執(zhí)行testadd方法。

  由于我們的TestCalculator測試類里面沒有顯式的suite方法,大部分情況下都是類似,這樣的話,TestRunner創(chuàng)建了一個默認的TestSuite對象,看下圖:

  那么同時TestRunner還需要創(chuàng)建包含測試結果(成功,失敗或出錯)的TestResult對象,具體過程如下:

  1.開始的時候,TestRunner實例化了一個TestResult對象,在測試順序執(zhí)行的時候,這個對象將用于保存測試結果。

  2.TestRunner向TestResult注冊,是add一個監(jiān)聽器,這樣的話在執(zhí)行測試過程中,TestRunner可以收到各種事件,TestResult會廣播如下方法:測試開始(startTest); 測試失敗(addFailure); 遇到測試錯誤(addError); 測試結束(endTest)

  3.知道了這些事件后,TestRunner可以隨著測試的進行而顯示進度條了,并且在失敗或錯誤的時候顯示出來。

  4.TestRunner通過調用TestSuite的run(TestResult)方法來開始測試

  5.TestSuite為它所擁有的每個Test Case實例調用run(TestResult)方法。

  6.Test Case使用傳遞給它的TestResult實例來調用其run(Test)方法,并把自身作為參數(shù)傳遞給run方法,這樣TestResult 立馬可以用runBare()來回調它。

  接著是執(zhí)行測試方法了:

  這里需要說明的是對于每個TestCase都會調用runBare()方法,這里只有一個testAdd方法,所以只調用一次,請看下圖:

 

  1.runBare()方法將調用setUp, testAdd, teardown 方法,順序執(zhí)行。

  2.如果調用3個方法的過程出現(xiàn)任何失敗或錯誤,那么TestResult會分別調用addFailure 和addError來通知它的所有Listener。

  3.這樣TestRunner會收到這些錯誤或失敗,也會羅列出這些錯誤,否則進度條是綠色的,讓你知道測試方法沒有問題。

  4.當tearDown方法執(zhí)行完后,測試也完成了,TestResult 會通過調用endTest把這個結果通告給所有的Listener。

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