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

3.UML圖:

圖中單個對象是樹葉(Leaf),而組合結(jié)構(gòu)是Compoiste,它維護了一個Leaf的集合。而Component是一個抽象角色,給出了共有接口和默認(rèn)行為,也是JUnit源碼中的Test接口。

4.效果:
1)定義了基本對象和組合對象的類層次結(jié)構(gòu),通過遞歸可以產(chǎn)生更復(fù)雜的組合對象
2)簡化了客戶代碼,客戶可以使用一致的方式對待單個對象和組合結(jié)構(gòu)
3)添加新的組件變的很容易。但這個會帶來一個問題,你無法限制組件中的組件,只能靠運行時的檢查來施加必要的約束條件

    具體到JUnit源碼,單個對象是TestCase,而復(fù)合結(jié)構(gòu)是TestSuite,Test是抽象角色只有一個run方法。TestSuite維護了一個TestCase對象的集合fTests:

<!---->     private Vector fTests= new Vector(10);
      /**
     * Adds a test to the suite.
     */
    public void addTest(Test test) {
        fTests.addElement(test);
    }
    /**
     * Runs the tests and collects their result in a TestResult.
     */
    public void run(TestResult result) {
        for (Enumeration e= tests(); e.hasMoreElements(); ) {
              if (result.shouldStop() )
                  break;
            Test test= (Test)e.nextElement();
            test.run(result);
        }
    }

當(dāng)執(zhí)行run方法時遍歷這個集合,調(diào)用里面每個TestCase對象的run()方法,從而執(zhí)行測試。我們使用的時候僅僅需要把TestCase添加到集合內(nèi),然后用一致的方式(run方法)調(diào)用他們進行測試。

考慮使用Composite模式之后帶來的好處:
1)JUnit可以統(tǒng)一地處理組合結(jié)構(gòu)TestSuite和單個對象TestCase,避免了條件判斷,并且可以遞歸產(chǎn)生更復(fù)雜的測試對象
2)很容易增加新的TestCase。

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