• <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>

            為生存而奔跑

               :: 首頁 :: 聯系 :: 聚合  :: 管理
              271 Posts :: 0 Stories :: 58 Comments :: 0 Trackbacks

            留言簿(5)

            我參與的團隊

            搜索

            •  

            積分與排名

            • 積分 - 326887
            • 排名 - 74

            最新評論

            閱讀排行榜

            評論排行榜

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

            composite 模式告訴我們要引入一個 Component 抽象類,為 Leaf 對象和 composite 對象
            定義公共的接口。這個類的基本意圖就是定義一個接口。在 Java 中使用 Composite模式時,
            優先考慮使用接口,而非抽象類,因此引入一個 Test 接口。當然我們的 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 有一個屬性 fTests (Vector
            類型)中保存了其子測試用例,提供 addTest 方法來實現增加子對象 TestCase ,并且還提供
            estCount  和 tests  等方法來操作子對象。最后通過 run()方法實現對其子對象進行委托
            (delegate) ,最后還提供 addTestSuite 方法實現遞歸,構造成樹形。 
            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)); 

            }   

            注意所有上面的代碼是對 Test 接口進行實現的。 由于 TestCase 和 TestSuit兩者都符合 Test
            接口,我們可以通過 addTestSuite 遞歸地將 TestSuite 再組合成 TestSuite,這樣將構成樹形結
            構。所有開發者都能夠創建他們自己的 TestSuit。測試人員可創建一個組合了這些測試用例

            的 TestSuit 來運行它們所有的 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 閱讀(381) 評論(0)  編輯 收藏 引用 所屬分類: Design Pattern
            日韩AV无码久久一区二区| 精品国产乱码久久久久软件| 狠狠综合久久AV一区二区三区| 亚州日韩精品专区久久久| 久久99热这里只频精品6| 99久久无色码中文字幕| 欧美国产精品久久高清| 久久亚洲私人国产精品vA| 国产精品激情综合久久| 欧美牲交A欧牲交aⅴ久久| 9191精品国产免费久久| 久久亚洲精品无码aⅴ大香 | 国产亚洲欧美精品久久久| 97精品伊人久久久大香线蕉| 伊人久久久AV老熟妇色| 国产精品美女久久久久av爽| 久久久久人妻精品一区二区三区| 久久人人爽人人爽人人片AV东京热| 久久久久亚洲AV片无码下载蜜桃| 久久久久亚洲精品男人的天堂| 精品久久久久久综合日本| 久久精品免费一区二区| 久久久久亚洲av成人无码电影 | 久久久久亚洲精品天堂| 青春久久| 久久人搡人人玩人妻精品首页| 久久99国产综合精品免费| 亚洲国产精品无码久久SM| 九九精品久久久久久噜噜| 欧美激情精品久久久久久| 久久综合狠狠综合久久97色| 成人国内精品久久久久影院VR| 狠狠色丁香久久婷婷综合五月| 亚洲国产欧洲综合997久久| 久久久亚洲AV波多野结衣| 日本国产精品久久| 色婷婷久久久SWAG精品| 日韩va亚洲va欧美va久久| 久久精品中文字幕一区| 少妇被又大又粗又爽毛片久久黑人 | 久久精品国产亚洲av麻豆色欲|