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

          主站蜘蛛池模板: 永城市| 阳泉市| 日土县| 襄汾县| 焉耆| 穆棱市| 哈尔滨市| 泉州市| 吴桥县| 沾化县| 白朗县| 宁夏| 宁明县| 横山县| 临潭县| 芮城县| 公主岭市| 通化县| 珲春市| 温州市| 文登市| 宜兴市| 塔城市| 封开县| 资溪县| 青河县| 弥勒县| 开平市| 苍南县| 姚安县| 高邮市| 潼南县| 积石山| 民县| 博白县| 武安市| 新巴尔虎左旗| 西乡县| 巴楚县| 沽源县| 明光市|