新的起點 新的開始

          快樂生活 !

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

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

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

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

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

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

                           }

          對于Global.getThirdPart() 我們可以Mock一個thirdPart 而不是實際的對象,同理 Connection也是。首先我們創建兩個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()
                 必須先進行錄制狀態進行錄制,然后才能就是測試狀態使用之前設置的錄制值。
             然后對于這個方法的測試將很簡單 只要調用給方法 看是不是返回4就可以了,完全與環境無關。簡單吧!!



              
              


          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/  回復  更多評論   


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


          網站導航:
           

          公告

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

          統計

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語學習網站

          JAVA站點

          優秀個人博客鏈接

          官網學習站點

          生活工作站點

          最新隨筆

          搜索

          積分與排名

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 福建省| 繁峙县| 丹棱县| 天峻县| 杭州市| 吉隆县| 柯坪县| 太白县| 水城县| 贵港市| 荣成市| 平潭县| 和田市| 北流市| 晋城| 万宁市| 河北省| 台东市| 上高县| 观塘区| 海门市| 甘泉县| 灵寿县| 徐州市| 营山县| 阜康市| 晋城| 东乡县| 聊城市| 揭东县| 泸定县| 吴旗县| 昭通市| 荔波县| 惠来县| 醴陵市| 常宁市| 驻马店市| 宜黄县| 于田县| 西充县|