Mockito快速入門

為什么單元測試要用Mock俯萎?

首先添加maven依賴

然后為了使代碼更簡潔,最好在測試類中導入靜態(tài)資源

1.簡單的mock操作:

【創(chuàng)建mock對象不能對final培漏,Anonymous(匿名) 常侦,primitive類(原始)進行mock】

【可以用PowerMockito的 @PrepareForTest()注入final類等】

@RunWith(PowerMockRunner.class)語句告訴JUnit用PowerMockRunner來執(zhí)行測試星爪。

@PrepareForTest(XX.class)語句告訴PowerMock準備XX類進行測試。適用于模擬final類或有final, private, static, native方法的類。

@Test

public void test(){

List list = Mockito.mock(List.class);

Mockito.when(list.get(0)).thenReturn("helloworld");

String result = list.get(0);

Mockito.verify(list).get(0);// 驗證list.get(0)是否執(zhí)行了

Assert.assertEquals("helloworld",result);//(預期值惫谤,得到的值)

}

2.異常

@Rule

public ExpectedException thrown= ExpectedException.none();

@Test

public void test(){

Object obj = new Object();//參數設置

thrown.expect(xxooException.class);//預期將拋出的異常

xxService.someMethod(obj);//執(zhí)行方法壁顶,若拋出預期的異常則test成功通過

}

3.怎么mock一個abstract抽象類

可以先創(chuàng)建一個子類繼承這個abstract類,override該抽象類的abstract方法溜歪,不用override其它方法

@InjectMocks

@Spy

private AbstractService verifyService = new MockService();

private class MockService extends AbstractService{

@Override

public String someMethod() {return null;}

}

4.Mock對象只能調用stubbed方法博助,調用不了它真實的方法。

但Mockito可以監(jiān)視(@Spy)一個真實的對象痹愚,這時對它進行方法調用時它將調用真實的方法富岳,同時也可以stubbing這個對象的方法讓它返回我們的期望值。另外不論是否是真實的方法調用都可以進行verify驗證拯腮。

but和創(chuàng)建mock對象一樣窖式,對于final類、匿名類和Java的基本類型是無法進行spy的动壤。

監(jiān)視對象

監(jiān)視一個對象需要調用spy(T object)方法萝喘,如:List spy = spy(new LinkedList());那么spy變量就在監(jiān)視LinkedList實例。

被監(jiān)視對象的Stubbing

stubbing被監(jiān)視對象的方法時要慎用when(Object)琼懊,如:

List?spy?=?spy(newLinkedList());

when(spy.get(0)).thenReturn("foo");

doReturn("foo").when(spy).get(0);

當調用when(spy.get(0)).thenReturn("foo")時阁簸,會調用真實對象的get(0),由于list是空的所以會拋出IndexOutOfBoundsException異常哼丈,用doReturn可以避免這種情況的發(fā)生启妹,因為它不會去調用get(0)方法。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末醉旦,一起剝皮案震驚了整個濱河市饶米,隨后出現的幾起案子,更是在濱河造成了極大的恐慌车胡,老刑警劉巖檬输,帶你破解...
    沈念sama閱讀 217,826評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異匈棘,居然都是意外死亡丧慈,警方通過查閱死者的電腦和手機,發(fā)現死者居然都...
    沈念sama閱讀 92,968評論 3 395
  • 文/潘曉璐 我一進店門主卫,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逃默,“玉大人,你說我怎么就攤上這事队秩⌒ν” “怎么了?”我有些...
    開封第一講書人閱讀 164,234評論 0 354
  • 文/不壞的土叔 我叫張陵馍资,是天一觀的道長筒主。 經常有香客問我关噪,道長,這世上最難降的妖魔是什么乌妙? 我笑而不...
    開封第一講書人閱讀 58,562評論 1 293
  • 正文 為了忘掉前任使兔,我火速辦了婚禮,結果婚禮上藤韵,老公的妹妹穿的比我還像新娘虐沥。我一直安慰自己,他們只是感情好泽艘,可當我...
    茶點故事閱讀 67,611評論 6 392
  • 文/花漫 我一把揭開白布欲险。 她就那樣靜靜地躺著,像睡著了一般匹涮。 火紅的嫁衣襯著肌膚如雪天试。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,482評論 1 302
  • 那天然低,我揣著相機與錄音喜每,去河邊找鬼。 笑死雳攘,一個胖子當著我的面吹牛带兜,可吹牛的內容都是我干的。 我是一名探鬼主播吨灭,決...
    沈念sama閱讀 40,271評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼刚照,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沃于?” 一聲冷哼從身側響起涩咖,我...
    開封第一講書人閱讀 39,166評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎繁莹,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體特幔,經...
    沈念sama閱讀 45,608評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡咨演,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,814評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了蚯斯。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片薄风。...
    茶點故事閱讀 39,926評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖拍嵌,靈堂內的尸體忽然破棺而出遭赂,到底是詐尸還是另有隱情,我是刑警寧澤横辆,帶...
    沈念sama閱讀 35,644評論 5 346
  • 正文 年R本政府宣布撇他,位于F島的核電站,受9級特大地震影響,放射性物質發(fā)生泄漏困肩。R本人自食惡果不足惜划纽,卻給世界環(huán)境...
    茶點故事閱讀 41,249評論 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望锌畸。 院中可真熱鬧勇劣,春花似錦、人聲如沸潭枣。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,866評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盆犁。三九已至命咐,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚣抗,已是汗流浹背侈百。 一陣腳步聲響...
    開封第一講書人閱讀 32,991評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留翰铡,地道東北人钝域。 一個月前我還...
    沈念sama閱讀 48,063評論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像锭魔,于是被迫代替她去往敵國和親例证。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,871評論 2 354

推薦閱讀更多精彩內容

  • Spring Cloud為開發(fā)人員提供了快速構建分布式系統(tǒng)中一些常見模式的工具(例如配置管理迷捧,服務發(fā)現织咧,斷路器,智...
    卡卡羅2017閱讀 134,656評論 18 139
  • 本文介紹了Android單元測試入門所需了解的內容漠秋,包括JUnit笙蒙、Mockito和PowerMock的使用,怎樣...
    于衛(wèi)國閱讀 4,576評論 0 5
  • 對象的創(chuàng)建與銷毀 Item 1: 使用static工廠方法庆锦,而不是構造函數創(chuàng)建對象:僅僅是創(chuàng)建對象的方法捅位,并非Fa...
    孫小磊閱讀 1,982評論 0 3
  • 原文鏈接 : Unit tests with Mockito - Tutorial 原文作者 : vogella ...
    曾梓華閱讀 34,603評論 2 50
  • 秋,是最舒適的季節(jié)搂抒。不同于春的溫暖慵懶艇搀,夏的燥熱困頓,冬的冰冷刺骨求晶,提到秋焰雕,人們腦海中就自動浮現出一個詞:神清氣爽...
    噠小嗎閱讀 392評論 0 0