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

4.效果:
1)命令模式將調(diào)用操作的對(duì)象與如何實(shí)現(xiàn)該操作的對(duì)象解耦。
2)將命令當(dāng)成一個(gè)頭等對(duì)象,它們可以像一般對(duì)象那樣進(jìn)行操縱和擴(kuò)展
3)可以將多個(gè)命令復(fù)合成一個(gè)命令,與Composite模式結(jié)合使用
4)增加新的命令很容易,隔離對(duì)現(xiàn)有類的影響
5)可以與備忘錄模式配合,實(shí)現(xiàn)撤銷功能。

    在了解了Command模式之后,那我們來(lái)看JUnit的源碼,Test接口是命令的抽象接口,而TestCase和TestSuite是具體的命令
<!---->//抽象命令接口
package junit.framework;

/**
 * A <em>Test</em> can be run and collect its results.
 *
 * @see TestResult
 */
public interface Test {

    /**
     * Counts the number of test cases that will be run by this test.
     */
    public abstract int countTestCases();
    /**
     * Runs a test and collects its result in a TestResult instance.
     */
    public abstract void run(TestResult result);
}

//具體命令一

public abstract class TestCase extends Assert implements Test {
    /**
     * the name of the test case
     */
    private final String fName;
    /**
  

//具體命令二

public class TestSuite implements Test {
    

由此帶來(lái)的好處:
1.客戶無(wú)需使用任何條件語(yǔ)句去判斷測(cè)試的類型,可以用統(tǒng)一的方式調(diào)用測(cè)試和測(cè)試套件,解除了客戶與具體測(cè)試子類的耦合
2.如果要增加新的TestCase也很容易,實(shí)現(xiàn)Test接口即可,不會(huì)影響到其他類。
3.很明顯,TestSuite是通過(guò)組合多個(gè)TestCase的復(fù)合命令,這里使用到了Composite模式(組合)
4.盡管未實(shí)現(xiàn)redo和undo操作,但將來(lái)也很容易加入并實(shí)現(xiàn)。

    我們上面說(shuō)到TestSuite組合了多個(gè)TestCase,應(yīng)用到了Composite模式,那什么是Composite模式呢?具體來(lái)了解下。

Composite模式

composite模式是對(duì)象結(jié)構(gòu)型模式之一。
1.意圖:將對(duì)象組合成樹形結(jié)構(gòu)以表示“部分——整體”的層次結(jié)構(gòu)。使得用戶對(duì)單個(gè)對(duì)象和組合結(jié)構(gòu)的使用具有一致性。

2.適用場(chǎng)景:
1)想表示對(duì)象的部分-整體層次
2)希望用戶能夠統(tǒng)一地使用組合結(jié)構(gòu)和單個(gè)對(duì)象。具體到JUnit源碼,我們是希望用戶能夠統(tǒng)一地方式使用TestCase和TestSuite

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