• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            為生存而奔跑

               :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

            留言簿(5)

            我參與的團(tuán)隊(duì)

            搜索

            •  

            積分與排名

            • 積分 - 330191
            • 排名 - 74

            最新評(píng)論

            閱讀排行榜

            評(píng)論排行榜

               當(dāng) JUnit 不必區(qū)分其運(yùn)行的是一個(gè)或多個(gè)測試用例時(shí),能夠輕松地解決這個(gè)問題的模式就
            是 Composite(組合)模式。摘引其意圖,"將對(duì)象組合成樹形結(jié)構(gòu)以表示'部分-整體'的層次
            結(jié)構(gòu)。Composite 使得用戶對(duì)單個(gè)對(duì)象和組合對(duì)象的使用具有一致性。"在這里'部分-整體'
            的層次結(jié)構(gòu)是解決問題的關(guān)鍵,可以把單個(gè)的 TestCase 看作部分,而把復(fù)合的 TestCase 看
            作整體(稱為 TestSuit) 。這樣使用該模式便可以恰到好處得解決了這個(gè)難題。
             Composite 模式引入以下的參與者:
            ?  Component:這是一個(gè)抽象角色,它給參加組合的對(duì)象規(guī)定一個(gè)接口。這個(gè)角色,
            給出共有的接口和默認(rèn)行為。其實(shí)就我們的 Test 接口,它定義出 run 方法。
            ?  Composite:實(shí)現(xiàn)共有接口并維護(hù)一個(gè)測試用例的集合。就是復(fù)合測試用例 TestSuit
            ?  Leaf:代表參加組合的對(duì)象,它沒有下級(jí)子對(duì)象,僅定義出參加組合的原始對(duì)象的
            行為,其實(shí)就是單一的測試用例 TestCase,它僅實(shí)現(xiàn) Test 接口的方法。
            其實(shí) componsite 模式根據(jù)所實(shí)現(xiàn)的接口類型區(qū)分為兩種形式,分別稱為安全式和透明式。
            JUnit 中使用了安全式的結(jié)構(gòu),這樣在 TestCase 中沒有管理子對(duì)象的方法。

            composite 模式告訴我們要引入一個(gè) Component 抽象類,為 Leaf 對(duì)象和 composite 對(duì)象
            定義公共的接口。這個(gè)類的基本意圖就是定義一個(gè)接口。在 Java 中使用 Composite模式時(shí),
            優(yōu)先考慮使用接口,而非抽象類,因此引入一個(gè) Test 接口。當(dāng)然我們的 leaf 就是 TestCase
            了。其源代碼如下:
            //composite模式中的Component角色 
            public interface Test {   
            public abstract void run(TestResult result); 

            //composite模式中的Leaf角色 
            public abstract class TestCase extends Assert implements Test { 
            public void run(TestResult result) { 
                   result.run(
            this); 
                  } 
            }


            下面,列出 Composite 源碼。將其取名為 TestSuit 類。TestSuit 有一個(gè)屬性 fTests (Vector
            類型)中保存了其子測試用例,提供 addTest 方法來實(shí)現(xiàn)增加子對(duì)象 TestCase ,并且還提供
            estCount  和 tests  等方法來操作子對(duì)象。最后通過 run()方法實(shí)現(xiàn)對(duì)其子對(duì)象進(jìn)行委托
            (delegate) ,最后還提供 addTestSuite 方法實(shí)現(xiàn)遞歸,構(gòu)造成樹形。 
            public class TestSuite implements Test { 
              
            private Vector fTests= new Vector(10); 
                  
            public void addTest(Test test) { 
               fTests.addElement(test); 
             } 
            public Enumeration tests() { 
               
            return fTests.elements(); 

            public void run(TestResult result) { 
                
            for (Enumeration e= tests(); e.hasMoreElements(); ) { 
                    Test test
            = (Test)e.nextElement(); 
                runTest(test, result); 
               } 
             } 
            public void addTestSuite(Class testClass) { 
               addTest(
            new TestSuite(testClass)); 

            }   

            注意所有上面的代碼是對(duì) Test 接口進(jìn)行實(shí)現(xiàn)的。 由于 TestCase 和 TestSuit兩者都符合 Test
            接口,我們可以通過 addTestSuite 遞歸地將 TestSuite 再組合成 TestSuite,這樣將構(gòu)成樹形結(jié)
            構(gòu)。所有開發(fā)者都能夠創(chuàng)建他們自己的 TestSuit。測試人員可創(chuàng)建一個(gè)組合了這些測試用例

            的 TestSuit 來運(yùn)行它們所有的 TestCase。
                public static Test suite() {
                    TestSuite suite1 = new TestSuite("我的測試TestSuit1");
                    TestSuite suite2 = new TestSuite("我的測試TestSuit2");
                    suite1.addTestSuite(untitled6.Testmath.class);
                    suite2.addTestSuite(untitled6.Testmulti.class);
                    suite1.addTest(suite2);
                    return suite1;
                }

            posted on 2011-03-01 20:31 baby-fly 閱讀(391) 評(píng)論(0)  編輯 收藏 引用 所屬分類: Design Pattern
            久久精品国产福利国产琪琪| 人妻无码αv中文字幕久久 | 久久国产精品久久久| 国产99久久精品一区二区| 久久成人国产精品一区二区| 久久亚洲精品无码aⅴ大香| 99久久婷婷国产综合亚洲| 国产精品久久久天天影视香蕉| 国产精品久久久久久久人人看| 久久久久人妻一区二区三区vr| 国产精品美女久久久久av爽| 色诱久久久久综合网ywww| 久久青青草原精品国产软件| 精品少妇人妻av无码久久| 亚洲国产精品综合久久网络| 婷婷综合久久狠狠色99h| 亚洲∧v久久久无码精品| 欧美久久一区二区三区| 99久久国产综合精品成人影院| 久久偷看各类wc女厕嘘嘘| 国产精品99久久久精品无码| 国产成人精品久久亚洲高清不卡| 久久久无码人妻精品无码| 精品久久久一二三区| 亚洲午夜无码久久久久小说| 国产成人精品久久亚洲高清不卡| 久久91精品国产91久久小草 | 一本色道久久88—综合亚洲精品| 久久久精品久久久久久| 久久精品一区二区影院| 99久久免费国产精品| 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲高清不卡 国产成人精品久久亚洲 | 狠狠色丁香久久婷婷综| 人妻精品久久久久中文字幕69| 国产69精品久久久久久人妻精品| 青青草原综合久久大伊人| 亚洲中文久久精品无码ww16| 伊人久久大香线焦AV综合影院| 久久精品一本到99热免费| 亚洲日本va中文字幕久久| 久久精品国产久精国产思思|