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 閱讀(2537) 評論(0)  編輯  收藏 所屬分類: software test

          主站蜘蛛池模板: 故城县| 图片| 九龙县| 桂东县| 肥西县| 桃园县| 醴陵市| 栾城县| 桐柏县| 游戏| 古交市| 济南市| 海口市| 屏东市| 通州区| 武邑县| 乌审旗| 两当县| 革吉县| 陇川县| 兴义市| 新丰县| 昌乐县| 铜山县| 牡丹江市| 沾化县| 论坛| 长顺县| 黑河市| 江城| 大冶市| 大兴区| 阳东县| 潞城市| 东源县| 伊宁县| 鄂托克前旗| 托克逊县| 扎赉特旗| 滨州市| 宜丰县|