您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 > junit
JUNIT源碼探秘系列(上)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/4/16 14:10:56 ] 推薦標(biāo)簽:

1.1      初始化加載用例集階段

在初始化加載階段,程序解析主要有一個(gè)重要分支,一個(gè)是測試代碼中是否有”suite”關(guān)鍵字,兩外在測試代碼中是否含有”RepeatedTest”也要注意。

public static Test suite() {

    TestSuite suite = new TestSuite();
suite.addTestSuite(CalculatorTest.class);

return suite;}

我們先看看代碼中含有”suite”的加載過程,下圖所示(根據(jù)代碼繪制):

步驟(測試代碼中含有“suite”):

1.         Main方法先new TestResult,然后待用start方法;start方法中主要做了兩件事情,初始化解析加載測試集,即getTest;另外一件是執(zhí)行調(diào)度測試集并記錄測試結(jié)果,即doRun

2.         在start方法中調(diào)用BaseTestRunner中的getTest(),在getTest中,通過反射檢查測試代碼中是否含有“suite”關(guān)鍵字,如果沒有則按上圖的流程圖執(zhí)行調(diào)用,創(chuàng)建一個(gè)TestSuite

3.         如果有則如上圖所示執(zhí)行,通過反射調(diào)用解析測試方法

(Test)suiteMethod.invoke(null, new Class[0]);

4.         在測試方法中調(diào)用并初始化TestSuite

5.         將一個(gè)個(gè)testSuite對象加載到測試集中

6.         通過反射的方法,從測試代碼中解析出所有測試方法,然后篩選出test開頭,且參數(shù)為空,類型為viod的方法,

7.         找到待測試的方法(6中篩選過濾),然后通過反射后newInstance一個(gè)個(gè)測試方法,轉(zhuǎn)化成Junit的測試用例(testcase)

8.         將Junit轉(zhuǎn)化的測試用例加載fTest測試集中,待執(zhí)行

另外:注意一點(diǎn),當(dāng)測試代碼中含有構(gòu)造函數(shù),時(shí),在上圖中第7步中,會判斷是否含有構(gòu)造函數(shù),如果有增加兩步,則按照下圖所示執(zhí)行

(1)       通過反射找到構(gòu)造函數(shù),

(2)       通過構(gòu)造函數(shù)初始化構(gòu)造對象,即tecase

上面說明了下在測試代碼中含有“suite”的情況,下面接著繼續(xù)看看測試代碼中不含有“suite”時(shí),如下圖

 

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