Mockito是一種mock工具/框架。我理解EasyMock有點過期了,Mockito是如今比較流行的。 框架
什麼是mock?說的直白一點,你們都知道unit test應該是儘量獨立的。對一個class的unit test不該該再和其餘class有任何交互。 工具
如今有一個類,掃描一個目錄並將找到的文件都上傳到FTP server。該類對於不一樣的FTP響應(找不到FTP server 或 上傳成功,或上傳失敗),有一些後續操做。 測試
在寫這個類的UT時,咱們就必須虛構出來一個FTP對象。這樣在UT中,這個虛構的對象可以代替真正的FTP,對被測試類的調用作出必定的響應。從而知道被測試類是否正確的調用了FTP並作出一些正確的指望的響應。從而達到測試的目的。 spa
mock能夠模擬各類各樣的對象,從而代替真正的對象作出但願的響應。 .net
關於mock的概念和EasyMock,能夠參考: server
Mock object and EasyMock framework 對象
http://blog.csdn.net/OnlyQi/archive/2011/04/26/6364885.aspx blog
官網:http://mockito.org/ element
一篇很好的入門文章: 字符串
http://blog.csdn.net/huoshuxiao/archive/2010/12/30/6107835.aspx
一些稍微複雜且實用一點的例子:
http://gojko.net/2009/10/23/mockito-in-six-easy-examples/
下面介紹mockito的基本使用方法。
如前面所說,咱們須要建立一個mock對象來代替真的對象。
所以,
模擬對象是第一步。模擬對象使用mock();
指定mock對象被調用時的返回值是第二步,好比指定讓mockFTP對象第一次被調用時返回"找不到FTP server"。這一步通常稱爲stubbing。通常是when(mockedList.get(0)).thenReturn("first")的樣子。
驗證被測試類是否正確工做是第三步,使用verify()。例如,驗證當mockFTP對象返回"找不到FTP server"時,測試代碼是否按要求重試。
而後測試就完成啦~~
模擬對象:
模擬方法調用的返回值:
好比
模擬方法調用拋出異常:
doThrow(new RuntimeException()).when(mockedList).clear();
模擬調用方法時的參數匹配:
模擬方法調用次數: