Junit3 8原始碼 核心類

2022-03-17 01:25:43 字數 1896 閱讀 2418

好久沒畫圖了,看下這個序列圖,還算比較清晰的:

以textui來分析:

頂層介面。testsuite和testcase均實現此介面,在具體執行的時候面向此介面程式設計,弱化型別,實現各自的執行流程。

testsuite中的run方法:

public

void

run(testresult result)

}public

void

runtest(test test, testresult result)

如果當前test是testsuite型別的,上面的runtest將會繼續呼叫其上的run方法,遍歷其維護的test集合,如果遍歷的是testcase,將走常規路線,否則依舊。

這樣就相當於由樹到葉的過程,最終的run在葉節點。

測試執行類。

啟動測試用例

通過呼叫basetestrunner的gettest方法來獲取testsuite。

測試集合類

構建使用者自定義的測試集合。將一組方法整合在一起來測試,自定義組合。如果使用者不定義suite方法來建立testsuite,框架預設生成乙個,包含所有的測試方法(testcase)。

method

suitemethod= null;

try catch(exception e)

如果我們自己來構建就是這樣:

public

static test suite()

跟蹤一下addtestsuite方法:

public

void

addtestsuite(class testclass)

public

void

addtest(test test)

這個過程可以讓頂層的testsuite包含兩個子testsuite,乙個是關於demotest的,另乙個是demotwotest,兩者又包含了各自的testcase。

測試用例類

為每個測試方法建立乙個testcase。包含乙個最本質的run方法,僅僅持有該方法的名稱,利用反射來呼叫測試方法。

/**

* runs the test case and collects the results in testresult.

*/public

void

run(testresult result)

testcase的run方法會呼叫testresult的run

測試結果類

維護測試結果。最基本的測試方法最終都會在這裡執行,方便統計結果。

/**

* runs a testcase.

*/protected

void

run(final testcase test)

};runprotected(test, p);

endtest(test);

}/**

* runs a testcase.

*/public

void

runprotected(final test test, protectable p)

catch (assertionfailederror e)

catch (threaddeath e)

catch (throwable e)

}

testresult的run又反過來呼叫testcase的runba

junit3 8原始碼分析

首先在testsuite中的 public testsuite final class theclass catch nosuchmethodexception e object test try else catch instantiationexception e catch invocatio...

JUnit3 8的初步學習

1.建立乙個工程,取名隨意。2.建立包 com.test.junit3 並建立乙個計算類 calculator 新增其相應的方法。完成後 如下 public class calculator public int minus int a,int b public int multiply int a...

JUNIT3 8學習筆記(2)

2008年8月14號 天氣陰 周五 junit3.8學習筆記 2 執行testcase類的測試類,在執行每乙個測試類方法之前都會執行setup方法,因此可以將一些重複出現的程式碼寫到setup方法中,也可以將測試資料庫的程式碼連線程式碼寫到setup方法中。同樣,有初始化方法,就有銷毀方法teard...