新的起點(diǎn) 新的開始

          快樂(lè)生活 !

          獲17屆jolt大獎(jiǎng)的自動(dòng)測(cè)試工具agitarOne 初體驗(yàn)之-MockingBird的使用

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

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

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

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

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

                           }

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



              
              


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

          評(píng)論

          # re: 17屆jolt大獎(jiǎng)中的自動(dòng)測(cè)試工具agitarOne 初體驗(yàn)之-MockingBird的使用 2007-12-17 22:12 vinent

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


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


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

          公告

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

          統(tǒng)計(jì)

          常用鏈接

          留言簿(13)

          隨筆分類(71)

          隨筆檔案(179)

          文章檔案(13)

          新聞分類

          IT人的英語(yǔ)學(xué)習(xí)網(wǎng)站

          JAVA站點(diǎn)

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

          官網(wǎng)學(xué)習(xí)站點(diǎn)

          生活工作站點(diǎn)

          最新隨筆

          搜索

          積分與排名

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 泸水县| 都安| 满城县| 淮南市| 交口县| 会宁县| 潮安县| 临西县| 吉林市| 汶上县| 郑州市| 仁怀市| 纳雍县| 米林县| 阳泉市| 密云县| 小金县| 那坡县| 沙洋县| 兰溪市| 乾安县| 股票| 桐梓县| 石城县| 贡山| 定安县| 连平县| 三河市| 南召县| 盘山县| 珠海市| 唐山市| 济源市| 澎湖县| 静安区| 寿光市| 海丰县| 鹤峰县| 石河子市| 广宗县| 霸州市|