Sky's blog

          我和我追逐的夢

          導航

          <2010年11月>
          31123456
          78910111213
          14151617181920
          21222324252627
          2829301234
          567891011

          留言簿(8)

          隨筆分類

          隨筆檔案

          閱讀排行榜

          評論排行榜

          常用鏈接

          統計

          其他鏈接

          友情鏈接

          最新評論

          easymock教程-改變同一個方法調用的行為

              在easymock中,對于mock對象的同一個方法,可以為每一次的調用定制不同的行為。在record階段easymock會精確的記錄我們錄入的行為,基于每一次的方法調用。

              這里有一個官網文檔中的例子:

              expect(mock.voteForRemoval("Document"))
                  .andReturn((
          byte42).times(3)
                  .andThrow(
          new RuntimeException()).times(4)
                  .andReturn((
          byte-42);

              對于mock.voteForRemoval("Document")方法的調用,.andReturn((byte) 42).times(3) 表明前3次調用將返回42,.andThrow(new RuntimeException()).times(4)表示隨后的4次調用(第4,5,6,7次)都將拋出異常,andReturn((byte) -42)表示第8次調用時將返回-42。

              我們來驗證一下:

          public class ChangeBehehaviorTest extends Assert {
              
          private static interface Service {
                  
          public byte voteForRemoval(String name);
              }


              @Test
              
          public void testExecute() {
                  
          final String name = "Document";

                  Service mock 
          = EasyMock.createMock("service", Service.class);

                  EasyMock.expect(mock.voteForRemoval(
          "Document")).andReturn((byte42).times(3).andThrow(new RuntimeException())
                          .times(
          4).andReturn((byte-42);

                  EasyMock.replay(mock);

                  
          for (int i = 0; i < 3; i++{
                      assertEquals(
          42, mock.voteForRemoval(name));
                  }

                  
          for (int i = 0; i < 4; i++{
                      
          try {
                          mock.voteForRemoval(name);
                          fail(
          "should throw RuntimeException");
                      }
           catch (RuntimeException e) {

                      }

                  }

                  assertEquals(
          -42, mock.voteForRemoval(name));
                  EasyMock.verify(mock);
              }

          }

              測試案例順利通過。

          posted on 2010-11-30 17:06 sky ao 閱讀(2552) 評論(0)  編輯  收藏 所屬分類: software test

          主站蜘蛛池模板: 垫江县| 涞水县| 奎屯市| 蓝田县| 庆元县| 望城县| 蛟河市| 尼玛县| 滨海县| 弥勒县| 鄂伦春自治旗| 漳平市| 湘潭县| 宜川县| 门源| 宝清县| 宿松县| 桐城市| 克东县| 屏山县| 股票| 寻甸| 隆化县| 乳源| 曲麻莱县| 阜新| 紫金县| 惠水县| 尤溪县| 娱乐| 东兰县| 沂源县| 荔波县| 南漳县| 高台县| 蚌埠市| 会同县| 祁连县| 台中市| 南城县| 汉川市|