少年阿賓

          那些青春的歲月

            BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
            500 Posts :: 0 Stories :: 135 Comments :: 0 Trackbacks

          常用鏈接

          留言簿(22)

          我參與的團隊

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          1、什么情況下會使用mock技術

            (1)需要將當前被測單元和其依賴模塊獨立開來,構造一個獨立的測試環境,不關注被測單元的依賴對象,只關注被測單元的功能邏輯

            ----------比如被測代碼中需要依賴第三方接口返回值進行邏輯處理,可能因為網絡或者其他環境因素,調用第三方經常會中斷或者失敗,無法對被測單元進行測試,這個時候就可以使用mock技術來將被測單元和依賴模塊獨立開來,使得測試可以進行下去。

            (2)被測單元依賴的模塊尚未開發完成,而被測單元需要依賴模塊的返回值進行后續處理

            ----------比如service層的代碼中,包含對Dao層的調用,但是,DAO層代碼尚未實現

            (3)被測單元依賴的對象較難模擬或者構造比較復雜

            ----------比如,支付寶支付的異常條件有很多,但是模擬這種異常條件很復雜或者無法模擬,比如,查詢聚劃算的訂單結果,無法在測試環境進行模擬

            2、Mock技術分類

            (1)手動構造mock對象

            ---------------比如,可以自己寫某個接口方法的實現,根據需要編寫返回值,測試代碼中使用該實現類對象

            缺點:會增加代碼量,在寫mock對象代碼時,有可能引入錯誤

            (2)使用開源代碼提供的構造mock方法

            --------------比如easyMock,提供了對接口類的模擬,能夠通過錄制、回放、檢查三步來完成大體的測試過程,可以驗證方法的調用種類、次數、順序,可以令Mock對象返回指定的值或拋出指定異常

            3、EasyMock使用

            (1)引入easyMock

            ------------在maven工程中,通過pom配置依賴關系

          <dependency>
              <groupId>org.easymock</groupId>
              <artifactId>easymock</artifactId>
              <version>3.0</version>
              <scope>test</scope>
          </dependency>

            ------------在普通java工程中,通過添加外部包的方式

            (2)使用easyMock過程

            1)使用EasyMock生成Mock對象;
            pingJiaDao = mockControl.createMock(IPingJiaDao.class);

            2)設定Mock對象的預期行為和輸出;
            EasyMock.expect(pingJiaDao.getGoodPingJiaRate(storeId)).andReturn(0.11);

            3)將Mock對象切換到Replay狀態;
            EasyMock.replay(pingJiaDao);

            4)調用Mock對象方法進行單元測試
            storeService.setStoredao(pingJiaDao);
            double rate = storeService.getStoreGoodRate(storeId);

            5)對Mock對象的行為進行驗證。
            EasyMock.verify(pingJiaDao);

            4、其他easyMock功能

            (1)特殊的mock對象:niceMock
            (2)參數匹配器
            (3)重置mock對象
            (4)模擬異常拋出
            (5)設置調用次數

          posted on 2013-04-20 15:19 abin 閱讀(413) 評論(0)  編輯  收藏 所屬分類: easyMock
          主站蜘蛛池模板: 敦化市| 苍南县| 丰台区| 延庆县| 揭西县| 建平县| 新蔡县| 舟山市| 舒兰市| 清镇市| 宜章县| 垫江县| 永春县| 桦甸市| 雅安市| 揭西县| 汽车| 广河县| 闵行区| 若羌县| 茶陵县| 海宁市| 普宁市| 南宫市| 洞头县| 林芝县| 务川| 涡阳县| 大余县| 德令哈市| 沁阳市| 错那县| 施甸县| 吴桥县| 新河县| 通州区| 阳江市| 资阳市| 敦化市| 交口县| 博罗县|