mock是程式設計中unit測試的常態。最開始使用的是easymock,確實很easy,可惜功能不夠強大。對於private方法測試無能為力,對於static的工具類也沒有辦法,於是轉向了powermockito,很好的解決了我的困擾。
mock測試的主要做法就是在真實方法呼叫之前先模擬被測試類關聯的外部類,介面的呼叫實現,對指定的引數,返回虛擬的結果(虛擬的返回值或者異常等),然後呼叫測試方法,再之後驗證模擬的函式呼叫都有發生。
記錄一下我使用powermockito的一些測試用例。
1.基本簡單的mock和驗證 (被測試的類是jcifsdatatransfer,引用的類包括ntlmpasswordauthentication和smbfile),其中ntlmpasswordauthentication和smbfile是在被測試類中new的例項,所以需要在class的annotation中除了@
runwith(powermockrunner.class) 也要加入 @preparefortest (jcifsdatatransfer.class)。方法呼叫都是有返回值的,所以用when.thenreturn來模擬。
注意:new的preparefortest必須是被測試類
2. mock static類,值得注意的是static的verify先呼叫verifystatic(times)再直接寫static方法的呼叫
3. 同乙個方法呼叫多次返回不一樣的值
when(somemock.somemethod()).doanswer(new answer()
});
或者如下(第一次丟擲異常,第二次返回mock值
when(mock.somemethod("some arg"))
.thenthrow(new runtimeexception())
.thenreturn("foo");
powermockito 的使用技巧
當it中有些依賴元件無法正常整合,需要mock支援測試,可以使用power mockito。特別注意 當對乙個物件進行powermockito,應該在prepare方法,統一mock這個物件。然後在其他方法,分別進行呼叫when,否則,多個方法內進行mock,會出錯。比如有個 service處於it...
Linux的基本操作 基本介紹
一 概述 1 常見作業系統 服務端作業系統 linux unix windows server 單機作業系統 windows dos ucdos win95 win98 win2000 xp vista win7 win8 mac linux ubuntu 移動作業系統 android ios wi...
Linux的基本操作 基本介紹
一 概述 1 常見作業系統 服務端作業系統 linux unix windows server 單機作業系統 windows dos ucdos win95 win98 win2000 xp vista win7 win8 mac linux ubuntu 移動作業系統 android ios wi...