Sky's blog

          我和我追逐的夢

          導(dǎo)航

          <2010年10月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          留言簿(8)

          隨筆分類

          隨筆檔案

          閱讀排行榜

          評論排行榜

          常用鏈接

          統(tǒng)計

          其他鏈接

          友情鏈接

          最新評論

          easymock教程-使用MockControl

               在easymock中,通常我們使用一下的代碼來創(chuàng)建mock對象

              IMyInterface mock = createStrictMock(IMyInterface.class);
              replay(mock);
              verify(mock); 
              reset(mock);

              如果需要mock多個對象,則需要如此:

              IMyInterface1 mock1 = createStrictMock(IMyInterface1.class);
              IMyInterface2 mock2 
          = createStrictMock(IMyInterface2.class);
              IMyInterface3 mock3 
          = createStrictMock(IMyInterface2.class);
              ...
              replay(mock1, mock2, mock3, ...);
              verify(mock1, mock2, mock3, ...); 
              reset(mock1, mock2, mock3, ...);

              不僅需要為每個mock對象增加create語句,而且需要為這個新增的mock對象更新replay()/verify()/reset()方法,比較啰嗦,而且容易出錯。

              這種情況下可以考慮使用MocksControl來簡化代碼:

              IMocksControl mocksControl = createControl();
              IMyInterface1 mock1 
          = mocksControl.createMock(IMyInterface1.class);
              IMyInterface2 mock2 
          = mocksControl.createMock(IMyInterface2.class);
              IMyInterface3 mock3 
          = mocksControl.createMock(IMyInterface3.class);
              ...
              mocksControl.replay();
              mocksControl.verify(); 
              mocksControl.reset();


              IMocksControl接口容許創(chuàng)建多個mock對象,這些創(chuàng)建的對象自動關(guān)聯(lián)到這個mocksControl實例上,以后再調(diào)用replay()/verify()/reset()時就不需要逐個列舉出每個mock對象。當(dāng)mock對象比較多,尤其是原有代碼上新增mock 對象時非常方便。

              事實上,Easymock.createMock()方法內(nèi)部實現(xiàn)也是使用IMocksControl的:

              public static <T> T createMock(final Class<T> toMock) {
                  
          return createControl().createMock(toMock);
              }


              
          public static IMocksControl createControl() {
                  
          return new MocksControl(MocksControl.MockType.DEFAULT);
              }

               除了使用方便外,使用IMocksControl還有另外一個重要的好處,就是如果使用strict control,則可以跨多個mock對象檢測方法的調(diào)用順序,具體的內(nèi)容請參考本教程中的"strict和nice"一文。

          posted on 2010-10-26 17:18 sky ao 閱讀(2617) 評論(0)  編輯  收藏 所屬分類: software test

          主站蜘蛛池模板: 府谷县| 太仆寺旗| 当涂县| 扎兰屯市| 通榆县| 淳化县| 长顺县| 永清县| 保康县| 乐安县| 佛教| 舒城县| 乃东县| 彭水| 怀仁县| 邵武市| 保靖县| 沙坪坝区| 香河县| 介休市| 武川县| 额济纳旗| 庆元县| 成武县| 逊克县| 麦盖提县| 夹江县| 江西省| 松桃| 随州市| 苏尼特左旗| 土默特右旗| 阜阳市| 晴隆县| 利辛县| 博罗县| 丹东市| 武宁县| 许昌市| 兴海县| 玛纳斯县|