新的起點 新的開始

          快樂生活 !

          獲17屆jolt大獎的自動測試工具agitarOne 初體驗之-MockingBird的使用

               大名鼎鼎的AgitarOne就不用解釋了,在昨天的隨筆中有一些解釋,今天主要說說Agitar 中Mockingbird的使用。
              
               為了提高測試代碼的Coverage,僅僅靠AgitarOne來處理2K多行的方法,是肯本不夠的。我現(xiàn)在搞的那個方法覆蓋率才20%,不過比同事的 10%好多了。不過都是測試 異常的Test Case,一個正向的Test Case的沒有。只能硬著頭皮看人家生成的代碼來提高代碼Coverage,在AgitarOne生成代碼中,大量使用了MockingBird來 Mock對像,對于Mock對象我想大家都應(yīng)該很清楚了吧。下面我將概要的介紹以下AgitarOne的MockingBird對象。
               
                 MockingBird 最主要的也就是以下5個API:
                 1.MockingBird.getProxyObject(), 該方法是創(chuàng)建一個Mock實例,比如我們想創(chuàng)建一個XXXHome 的mock 代碼如下:
                    XXXHome xxxHome =(XXXHome)MockingBird.getProxyObject(XXXHome.class)

                 2.Mockingbird.setReturnValue()  該方法指定一個方法返回特定的值。比如我們想調(diào)用getConnection 返回一個Mock 真是的Xmock對 
                   象, 代碼如下:
                    Mockingbird.getReturnValue(getConnection(),Xmock)
          ;
                 3.MockingBird.enterRecondingMode() 該方法就是使MockingBird進入錄制模式。現(xiàn)在不好說清楚, 下面會有代碼解釋。

                 4.MockingBird.enterTestMode()      該方法就是使MockingBird就如測試模式。

                 5.MockingBird.setException  該方法使一個方法拋出異常。比如我們想如果調(diào)用getConnection 拋出SQLException,代碼如下:
                  
          MockingBird.setException(getConnection,new SQLException("sql exception!"))

          下邊將表述如何使用。
          假如要測試以下方法,在這個方法中使用了第三方的代碼,比如是EJB或者是數(shù)據(jù)庫連接,那么我們在測試這個方法時難道好一定要有EJB容器或者真是的數(shù)據(jù)庫嗎?
          使用了MockingBird 就OK了!
                            private int getValue(){
                           
                             thirdPart x =
          Global.getThirdPart();
                             Connection connecton  = x.getConnection();
                             return connection.getValue("test");

                           }

          對于Global.getThirdPart() 我們可以Mock一個thirdPart 而不是實際的對象,同理 Connection也是。首先我們創(chuàng)建兩個Mock對象。
                  
                  thirdPart x =MockingBird.getProxyObject(thirdPart.class);
                   Connection connection =MockingBird.getProxyObject(Connection .class);
                         //       進入錄制模式
                   
          MockingBird.enterRecondingMode();
                     //Mock
          Global.getThirdPart(); 方法
                  Mockingbird.setReturnValue(Global.getThirdPart(),x);
                   //Mock x.getConnection(); 方法
             Mockingbird.setReturnValue(x.getConnection(),connection );
                   //Mock connection.getValue();  使之返回為4
                   Mockingbird.setReturnValue(connection.getValue("test") ,4);
                  進入測試模式
                  MockingBird.enterTestMode()
                 必須先進行錄制狀態(tài)進行錄制,然后才能就是測試狀態(tài)使用之前設(shè)置的錄制值。
             然后對于這個方法的測試將很簡單 只要調(diào)用給方法 看是不是返回4就可以了,完全與環(huán)境無關(guān)。簡單吧!!



              
              


          posted on 2007-12-17 22:10 advincenting 閱讀(2306) 評論(1)  編輯  收藏

          評論

          # re: 17屆jolt大獎中的自動測試工具agitarOne 初體驗之-MockingBird的使用 2007-12-17 22:12 vinent

          可以試試Agitar提供免費的自動化測試工具
          http://www.junitfactory.com/  回復(fù)  更多評論   


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           

          公告

          Locations of visitors to this pageBlogJava
        1. 首頁
        2. 新隨筆
        3. 聯(lián)系
        4. 聚合
        5. 管理
        6. <2007年12月>
          2526272829301
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          統(tǒng)計

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學習網(wǎng)站

          JAVA站點

          優(yōu)秀個人博客鏈接

          官網(wǎng)學習站點

          生活工作站點

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 夏津县| 内丘县| 井研县| 隆尧县| 石泉县| 宣威市| 呼玛县| 青铜峡市| 光泽县| 高雄市| 和静县| 兴隆县| 唐山市| 鲜城| 秦安县| 民丰县| 云龙县| 兴山县| 林口县| 昆山市| 邢台县| 镇远县| 海阳市| 阿巴嘎旗| 凤冈县| 左云县| 蓝山县| 邯郸县| 平江县| 满城县| 大悟县| 左贡县| 长春市| 宣恩县| 霍城县| 呼伦贝尔市| 榆中县| 扎兰屯市| 威海市| 太和县| 龙山县|