Junit源碼分析-設計模式

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方法就可以了,我們不用去關心它內部是怎麼實現的了。
看完之後,還請各位前輩們爲小弟指點指點!!!
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章