您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
JUnit源碼分析:Command模式和Composite模式
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/5/28 15:54:28 ] 推薦標(biāo)簽:

    JUnit的源碼相比于spring和hibernate來(lái)說(shuō)比較簡(jiǎn)單,但麻雀雖小,五臟俱全,其中用到了比較多的設(shè)計(jì)模式。很多人已經(jīng)在網(wǎng)上分享了他們對(duì)JUnit源碼解讀心得,我這篇小文談不出什么新意,本來(lái)不打算寫(xiě),可近工作上暫時(shí)無(wú)事可做,那寫(xiě)寫(xiě)吧,結(jié)合《設(shè)計(jì)模式》來(lái)看看。
    我讀的是JUnit3.0的源碼,目前JUnit已經(jīng)發(fā)布到4.0版本了,盡管有比較大的改進(jìn),但基本的骨架不變,讀3.0是為了抓住重點(diǎn),省去對(duì)旁支末節(jié)的關(guān)注。我們來(lái)看看JUnit的核心代碼,也是Junit.framework包,除了4個(gè)輔助類(lèi)(Assert,AssertFailedError,Protectable,TestFailure),剩下的是我們需要重點(diǎn)關(guān)注的了。我先展示一張UML類(lèi)圖:

    我們先不去關(guān)注TestDecorator類(lèi)(此處是Decorator模式,下篇文章再講),看看Test接口,以及它的兩個(gè)實(shí)現(xiàn)類(lèi)TestCase和TestSuite。很明顯,此處用到了Command模式,為什么要使用這個(gè)模式呢?讓我們先來(lái)看看什么是Command模式。

Command模式

Command模式是行為型模式之一

1.意圖:將一個(gè)請(qǐng)求封裝為一個(gè)對(duì)象,從而使你可用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化;對(duì)請(qǐng)求排隊(duì)或者記錄請(qǐng)求日志,以及支持可撤銷(xiāo)的操作。
2.適用場(chǎng)景:
1)抽象出待執(zhí)行的動(dòng)作以參數(shù)化對(duì)象,Command模式是回調(diào)函數(shù)的面向?qū)ο蟀姹;卣{(diào)函數(shù),我想大家都明白,函數(shù)在某處注冊(cè),然后在稍后的某個(gè)時(shí)候被調(diào)用。
2)可以在不同的時(shí)刻指定、排列和執(zhí)行請(qǐng)求。
3)支持修改日志,當(dāng)系統(tǒng)崩潰時(shí),這些修改可以被重做一遍。
4)通過(guò)Command模式,你可以通過(guò)一個(gè)公共接口調(diào)用所有的事務(wù),并且也易于添加新的事務(wù)。


3。UML圖:

上一頁(yè)123下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd