qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          Mockito單元測試框架學(xué)習(xí)

          一、問題:如何將mock的類自動注入到待測類,特別是在沒有setter方法的情況下。
            解答:
            前提:待測的service類及其依賴的其他類都是處在被spring管理中的。
            做法:在測試類中,只要將待測的類標(biāo)注為@InjectMocks,將其依賴的其他類標(biāo)注為 @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);//這句話執(zhí)行以后,aaaDao和bbbDao自動注入到abcService中。
          //在這之后,你就可以放心大膽地使用when().then()等進行更詳細的設(shè)置。
          }
          }
            二、問題:如何對連續(xù)的調(diào)用進行不同的返回
            對連續(xù)的調(diào)用進行不同的返回 (iterator-style stubbing)
            還記得在實例2中說道當(dāng)我們連續(xù)兩次為同一個方法使用stub的時候,他只會使用最新的一次。但是在某一個方法中我們確實有很多的調(diào)用怎么辦呢?mockito當(dāng)然想到這一點了:
          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"));
            當(dāng)然我們也可以將第一句寫的更簡單一些:
            when(mock.someMethod("some arg"))
            .thenReturn("one", "two", "three");

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

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

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 林口县| 汝阳县| 道孚县| 临泽县| 邛崃市| 封开县| 富民县| 密云县| 平遥县| 文成县| 宁阳县| 长葛市| 罗江县| 阳山县| 舞阳县| 四平市| 静乐县| 元氏县| 科技| 静宁县| 南溪县| 亳州市| 读书| 长武县| 星子县| 秦安县| 泰州市| 贡嘎县| 镇江市| 红安县| 兰坪| 乌审旗| 义马市| 凤庆县| 高阳县| 安溪县| 寿宁县| 沛县| 大石桥市| 太康县| 会昌县|