junit的底層**主要是由觀察者模式,組合模式,模板模式,命令模式 來實現的。
在junit裡首先會初始化乙個主題物件testresult物件,這個物件裡面有增加***的方法,所有的***方法都實現了
testlistener介面,這個介面會把一系統測試過程的資訊傳遞給所有的***,然後***會按照它們的方式顯示給用
戶,在這裡就用到了觀察者模式 ,觀察者模式就是定義物件間的一種一對多的依賴關係,解決多個物件間相互依賴關係的相
互通知。我們是讓多個觀察者物件同時監聽某乙個主題物件。testresult就是乙個被觀察者,testlistener就是乙個觀察者介面,只要testresult發生了變化,那麼所有實現testlistener介面的***全都會得到響應並作出相應的變化。我們增加乙個***也是非常的簡單,直接實現testlistener介面就行了,擴充套件性非常的強。
然後通過test介面多型生成乙個testsuite物件,在這裡它用到了組合模式 ,組合模式就是將物件以樹形結構組織起來,以達到「部分與整體」的層次結構,使客戶使用單個物件和組合物件的具有一致性。testsuite相當於樹形結構的樹枝,而所有測試類的父類testcase就相當於樹葉。當我們執行testsuite裡的run方法的時候,它會遍歷這個集合,呼叫每個testcase物件裡的run方法對所有的測試類進行測試。
在junit裡,testcase在執行測試之前和測試之後都要進行一些處理。如我們在測試之前要呼叫setup進行一些初始化,比如說資料庫連線等。在測試完以後要呼叫teardown方法進行一些清理工作,如釋放資料庫連線等。junit它在這裡用到模板模式 ,模板模式就是父類定義流程,子類定義實現。junit它就提供setup和teardown方法,在每次測試之前和之後呼叫。這樣我們測試就省去了不少的重複**。最後就是執行junit。它在這裡用到命令模式 ,命令模式就是把乙個物件的行為封裝成了乙個物件,這樣我們就不用去關心實現這個行為的具體細節了。在junit原始碼中,執行junit直接執行test介面的run方法就可以了,我們不用去關心它內部是怎麼實現的了。
看完之後,還請各位前輩們為小弟指點指點!!!
JUnit原始碼分析
junit junit原始碼學習和經驗分享。源 裡沒有密碼,好多開源框架都出自大牛大師之手,是學習的好例子,可惜自己沒啥耐心去看,網上搜尋到牛人解析,記錄下來,學習學習。深入junit原始碼之runner 深入junit原始碼之statement 深入junit原始碼之rule 深入junit原始碼...
JUnit原始碼分析(一)
一 引子junit 原始碼是我仔細閱讀過的第乙個開源專案原始碼。閱讀高手寫的 能學到一些好的程式設計風格和實現思路,這是提高自己程式設計水平行之有效的方法,因此早就想看看這些赫赫有名的框架是怎麼回事了。今天就拿最簡單的 junit 下手,也算開始自己的原始碼分析之路。junit 作為最著名的單元測試...
junit部分原始碼分析
通過對junit的粗略了解,大致的知道了這裡面的幾種模式 junit原始碼與之spring hibnate原始碼相比,就比較簡單了,但是麻雀雖小,五臟俱全,這裡面用到了幾 種設計模式,也是乙個短小精悍 非常完所的乙個框架。下面講乙個它的整體的框架吧 先得到testresult的物件,然後通過它的物件...