qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Mockito單元測試框架學習

          一、問題:如何將mock的類自動注入到待測類,特別是在沒有setter方法的情況下。
            解答:
            前提:待測的service類及其依賴的其他類都是處在被spring管理中的。
            做法:在測試類中,只要將待測的類標注為@InjectMocks,將其依賴的其他類標注為 @Mock,
            就可以使用MockitoAnnotations.initMocks(this);這句話自動將依賴的類注入待測類,如果依賴類在spring的管理下有自己的name,那么甚至在待測類中都不需要寫setter方法。
            例:
            1、待測類
          @Component("abcService")
          public class AbcService {
          @Resource(name="aaaDao")
          private AaaDao aaaDao;
          @Resource(name="bbbDao")
          private BbbDao bbbDao;
          ......//注:此處省略的代碼中并不包含aaaDao和bbbDao的setter方法。
          }
            2、測試類
          public class AbcServiceTest{
          @InjectMocks
          AbcService abcService;
          @Mock
          AaaDao aaaDao;
          @Mock
          BbbDao bbbDao;
          @Before
          public void setup(){
          MockitoAnnotations.initMocks(this);//這句話執行以后,aaaDao和bbbDao自動注入到abcService中。
          //在這之后,你就可以放心大膽地使用when().then()等進行更詳細的設置。
          }
          }
            二、問題:如何對連續的調用進行不同的返回
            對連續的調用進行不同的返回 (iterator-style stubbing)
            還記得在實例2中說道當我們連續兩次為同一個方法使用stub的時候,他只會使用最新的一次。但是在某一個方法中我們確實有很多的調用怎么辦呢?mockito當然想到這一點了:
          when(mock.someMethod("some arg"))
          .thenThrow(new RuntimeException())
          .thenReturn("foo");
          //First call: throws runtime exception:
          mock.someMethod("some arg");
          //Second call: prints "foo"
          System.out.println(mock.someMethod("some arg"));
          //Any consecutive call: prints "foo" as well (last stubbing wins).
          System.out.println(mock.someMethod("some arg"));
            當然我們也可以將第一句寫的更簡單一些:
            when(mock.someMethod("some arg"))
            .thenReturn("one", "two", "three");

          posted on 2014-11-03 09:10 順其自然EVO 閱讀(309) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年11月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 阳原县| 桂东县| 扎囊县| 武夷山市| 共和县| 甘孜县| 齐齐哈尔市| 临夏市| 鄂托克前旗| 南部县| 宜宾县| 阆中市| 钟祥市| 潜山县| 和林格尔县| 肇庆市| 连云港市| 崇仁县| 房山区| 华池县| 登封市| 友谊县| 陆良县| 兰考县| 凤山市| 福鼎市| 铜川市| 新余市| 天柱县| 彩票| 无锡市| 华坪县| 互助| 松原市| 南江县| 宝坻区| 客服| 南陵县| 济阳县| 高青县| 甘南县|