好久沒畫圖了,看下這個序列圖,還算比較清晰的:
以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...