junit部分原始碼分析

2021-08-25 10:30:56 字數 1312 閱讀 5691

通過對junit的粗略了解,大致的知道了這裡面的幾種模式:

junit原始碼與之spring、hibnate原始碼相比,就比較簡單了,但是麻雀雖小,五臟俱全,這裡面用到了幾

種設計模式,也是乙個短小精悍、非常完所的乙個框架。

下面講乙個它的整體的框架吧:

△ 先得到testresult的物件,然後通過它的物件把testlistener的子類加到testresult裡面去。

** 觀察者模式:testresult 與眾多測試結果***通過介面 testlistener 時行了松耦合,使它可以有

不同的使用方式。testresult不必關心有多少物件加到裡面去,它只要根據列表通知所有觀察者。

因此,testresult 不用更改自身**,而輕易地完成了對testlistener這種***的無限擴充。

△ 再通過test來得到testsuite物件,構造方法傳了class進去,然後對這個class進行判斷,看是不是test

的子類。如果不是就退出。是就會拿到這個類的全部方法,然後進行迴圈全部放到addtestmethod

方法裡面去。

(然後把它的方法取出來,對該方法進行判斷,看是不是以test開頭、是不是公有的方法、

裡面有沒有引數、返回型別是不是void型別。滿足這些條件後再把該方法加到list裡面去。)

** 組合模式:當系統的測試用例慢慢變得多起來,挨個執行測試用例就成了乙個棘手的問題。

因此junit裡面提供了testsuite的功能,它將多個測試用例放到乙個testsuite裡面來一次執行;

而且是testsuite裡面套testsuite的功能。很好的體現出了組合模式的樹形結構。

好處:1)它可以統一地處理組合結構testsuite和單個物件testcase,避免了條件判斷

2)很容易增加新的testcase。

△ 再執行test的run方法把testresult物件傳進來,通過對test的迭代,呼叫子類實現的方法,然後對

testlistener進行操作,將裡面監控的資訊列印出來。如果當測試方法失敗的時候會呼叫assert類裡

的fail方法。然的把錯誤資訊提示出來。

**    命令模式:

它並不需要知道請求testcase的操作資訊,僅把它當作一種命令來執行,然後把執行測試結果發給開發人員

開發人員不需要關心關於這個框架的細節。命令模式正是為了達到這種送耦合的目的。

** 模板模式:它在testcase這個抽象類中將整個測試的流程設定好了,比如先執行setup方法初始化

測試前提,在執行測試方法,然後再teardown來取消測試設定。而這些步驟的具體實現都延遲到子類中去,

也就是你實現的測試類中。

junit部分原始碼分析

通過對junit的粗略了解,大致的知道了這裡面的幾種模式 junit原始碼與之spring hibnate原始碼相比,就比較簡單了,但是麻雀雖小,五臟俱全,這裡面用到了幾 種設計模式,也是乙個短小精悍 非常完所的乙個框架。下面講乙個它的整體的框架吧 先得到testresult的物件,然後通過它的物件...

JUnit原始碼分析

junit junit原始碼學習和經驗分享。源 裡沒有密碼,好多開源框架都出自大牛大師之手,是學習的好例子,可惜自己沒啥耐心去看,網上搜尋到牛人解析,記錄下來,學習學習。深入junit原始碼之runner 深入junit原始碼之statement 深入junit原始碼之rule 深入junit原始碼...

JUnit原始碼分析(一)

一 引子junit 原始碼是我仔細閱讀過的第乙個開源專案原始碼。閱讀高手寫的 能學到一些好的程式設計風格和實現思路,這是提高自己程式設計水平行之有效的方法,因此早就想看看這些赫赫有名的框架是怎麼回事了。今天就拿最簡單的 junit 下手,也算開始自己的原始碼分析之路。junit 作為最著名的單元測試...