日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
學(xué)習(xí)Mockito框架

Mockito是一個(gè)流行的Mocking框架。它使用起來(lái)簡(jiǎn)單,學(xué)習(xí)成本很低,而且具有非常簡(jiǎn)潔的API,測(cè)試代碼的可讀性很高。因此它十分受歡迎,用戶群越來(lái)越多,很多的開(kāi)源的軟件也選擇了Mockito。要想了解更多有關(guān)Mockito的信息,請(qǐng)?jiān)L問(wèn)它的官方網(wǎng)站:http://mockito.org/

創(chuàng)新互聯(lián)公司-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比東寧網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式東寧網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋東寧地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴。

在開(kāi)始使用Mockito之前,先簡(jiǎn)單的了解一下Stub和Mock的區(qū)別。

Stub對(duì)象用來(lái)提供測(cè)試時(shí)所需要的測(cè)試數(shù)據(jù),可以對(duì)各種交互設(shè)置相應(yīng)的回應(yīng)。例如我們可以設(shè)置方法調(diào)用的返回值等等。Mockito中 when(…).thenReturn(…) 這樣的語(yǔ)法便是設(shè)置方法調(diào)用的返回值。另外也可以設(shè)置方法在何時(shí)調(diào)用會(huì)拋異常等。Mock對(duì)象用來(lái)驗(yàn)證測(cè)試中所依賴對(duì)象間的交互是否能夠達(dá)到預(yù)期。 Mockito中用 verify(…).methodXxx(…) 語(yǔ)法來(lái)驗(yàn)證 methodXxx方法是否按照預(yù)期進(jìn)行了調(diào)用。有關(guān)stub和mock的詳細(xì)論述見(jiàn),Martin Fowler文章《Mocks Aren't Stub》http://martinfowler.com/articles/mocksArentStubs.html。在Mocking框架中所謂的mock對(duì)象實(shí)際上是作為上述的stub和mock對(duì)象同時(shí)使用的。因?yàn)樗瓤梢栽O(shè)置方法調(diào)用返回值,又可以驗(yàn)證方法的調(diào)用。

Mockito的獲取

Jar包的獲取

可以訪問(wèn)下面的鏈接來(lái)下載最新的Jar包,筆者使用的當(dāng)前最新版為:1.8.5 http://code.google.com/p/mockito/downloads/list

Maven

如果項(xiàng)目是通過(guò)Maven管理的,需要在項(xiàng)目的Pom.xml中增加如下的依賴:

Java代碼

 
 
 
  1.      
  2.      
  3. org.mockito     
  4. mockito-all     
  5. 1.8 . 5      
  6. test     
  7.      
  8.     

Java代碼

 
 
 
  1.      
  2.      
  3. org.mockito     
  4. mockito-all     
  5. 1.8.5     
  6. test     
  7.      
  8.   

Mocktio包的引入

在程序中可以import org.mockito.Mockito;然后調(diào)用它的static方法,或者import static org.mockito.Mockito.*;個(gè)人傾向于后者,因?yàn)檫@樣可以更方便些。

一個(gè)簡(jiǎn)單的例子

Java代碼

 
 
 
  1. import   static  org.junit.Assert.*;     
  2. import   static  org.mockito.Mockito.*;     
  3. import  java.util.Iterator;     
  4. import  org.junit.Test;     
  5.      
  6. /**     
  7.  *      
  8.  * @author Brian Zhao     
  9.  */      
  10. public   class  SimpleTest {     
  11.          
  12.     @Test      
  13.     public   void  simpleTest(){     
  14.         //arrange      
  15.         Iterator i=mock(Iterator.class );     
  16.         when(i.next()).thenReturn("Hello" ).thenReturn( "World" );     
  17.         //act      
  18.         String result=i.next()+" " +i.next();     
  19.         //verify      
  20. verify(i, times(2 )).next();     
  21.         //assert      
  22.         assertEquals("Hello World" , result);     
  23.     }     
  24. }     

Java代碼

 
 
 
  1. import static org.junit.Assert.*;     
  2. import static org.mockito.Mockito.*;     
  3. import java.util.Iterator;     
  4. import org.junit.Test;     
  5.     
  6. /**    
  7.  *     
  8.  * @author Brian Zhao    
  9.  */    
  10. public class SimpleTest {     
  11.          
  12.     @Test    
  13.     public void simpleTest(){     
  14.         //arrange     
  15.         Iterator i=mock(Iterator.class);     
  16.         when(i.next()).thenReturn("Hello").thenReturn("World");     
  17.         //act     
  18.         String result=i.next()+" "+i.next();     
  19.         //verify     
  20. verify(i, times(2)).next();     
  21.         //assert     
  22.         assertEquals("Hello World", result);     
  23.     }     
  24. }    

在上面的例子中包含了Mockito的基本功能:

創(chuàng)建Mock對(duì)象

創(chuàng)建Mock對(duì)象的語(yǔ)法為,mock(class or interface)。例子中創(chuàng)建了Iterator接口的mock對(duì)象。

設(shè)置方法調(diào)用的預(yù)期返回

通過(guò)when(mock.someMethod()).thenReturn(value) 來(lái)設(shè)定mock對(duì)象某個(gè)方法調(diào)用時(shí)的返回值。例子中我們對(duì)Iterator接口的next()方法調(diào)用進(jìn)行了預(yù)期設(shè)定,當(dāng)調(diào)用next()方法時(shí)會(huì)返回”Hello”,由于連續(xù)設(shè)定了返回值,因此當(dāng)?shù)诙握{(diào)用時(shí)將返回”World”。

驗(yàn)證方法調(diào)用

接下來(lái)對(duì)mock對(duì)象的next()方法進(jìn)行了一系列實(shí)際的調(diào)用。mock對(duì)象一旦建立便會(huì)自動(dòng)記錄自己的交互行為,所以我們可以有選擇的對(duì)它的交互行為進(jìn)行驗(yàn)證。在Mockito中驗(yàn)證mock對(duì)象交互行為的方法是verify(mock).someMethod(…)。于是用此方法驗(yàn)證了 next()方法調(diào)用,因?yàn)檎{(diào)用了兩次,所以在verify中我們指定了times參數(shù)(times的具體應(yīng)用在后面會(huì)繼續(xù)介紹)。最后assert返回值是否和預(yù)期一樣。

原文鏈接:http://javasee.iteye.com/blog/1000868

【編輯推薦】

    Struts VS Spring兩種MVC框架比較

    Spring MVC框架的高級(jí)配置

    Spring MVC框架的高級(jí)配置(上)

    Spring MVC框架的高級(jí)配置(下)

    設(shè)計(jì)REST風(fēng)格的Java MVC框架:WebWind


分享題目:學(xué)習(xí)Mockito框架
URL標(biāo)題:http://m.5511xx.com/article/dheeips.html