Sky's blog

          我和我追逐的夢

          常用鏈接

          統計

          其他鏈接

          友情鏈接

          最新評論

          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

          主站蜘蛛池模板: 尚义县| 洛扎县| 崇州市| 酒泉市| 苗栗市| 伊川县| 和硕县| 汽车| 黄大仙区| 龙岩市| 临泉县| 东至县| 铁力市| 尤溪县| 新河县| 苏尼特左旗| 新丰县| 吉林市| 沧州市| 江津市| 揭阳市| 长泰县| 旅游| 广宁县| 怀来县| 惠水县| 湖口县| 临高县| 鄯善县| 武冈市| 水富县| 新郑市| 兴文县| 凉山| 长治县| 韶山市| 湘潭市| 长垣县| 隆昌县| 黄大仙区| 伊吾县|