powermockito 的使用技巧

2021-07-29 10:50:52 字數 1365 閱讀 1222

**

當it中有些依賴元件無法正常整合,需要mock支援測試,可以使用power mockito。

特別注意:

當對乙個物件進行powermockito,應該在prepare方法,統一mock這個物件。然後在其他方法,分別進行呼叫when,否則,多個方法內進行mock,會出錯。

比如有個 service處於it case的底層,普通的mock根本mock不進去,但我們又不能為了整合測試,為這個test case單獨開乙個口子,注入mock物件。power mockito強大的mock能力在這裡可以用上。

比如: 我的mock物件 impalaservice它在schmamessagehandler類裡new出來的,則需要加上註解。

首先在test 類的開頭,加上註解頭部,頭部類是mock物件所在類。

@runwith(powermockrunner.class)

@preparefortest()

其次:
pooledimpalaservice impalaservice = powermockito.mock(pooledimpalaservice.class);

powermockito.whennew(pooledimpalaservice.class).witharguments((configurationanyobject()).thenreturn(impalaservice)

;donothing().when(impalaservice).createtable(anystring(),(schema) anyobject());

使用powermockito,注意在用any()引數時候,比如 

donothing().when(impalaservice).createtable(anystring(),(schema) 

anyobject());

引數列表中,只要乙個使用了any(),any****,則所有引數都要用any相關的引數,否則mock不成功。
總的來說,在it當中,只有你想mock乙個物件,一定可以,比如你在a類中用到了b類,那麼在preparefortest中增加a類的註解。
如下:
@preparefortest()
然後,在it中 宣告乙個b類,b b = powermockito.mock(b.class);
這時候,就可以指定b的方法的返回值,或 powermockit.donothing().when(b).方法名(),讓該方法什麼也不做。最後,再講a例項化。powermockit是講究mock設定順序的。一定要注意。

PowerMockito的基本使用記錄

mock是程式設計中unit測試的常態。最開始使用的是easymock,確實很easy,可惜功能不夠強大。對於private方法測試無能為力,對於static的工具類也沒有辦法,於是轉向了powermockito,很好的解決了我的困擾。mock測試的主要做法就是在真實方法呼叫之前先模擬被測試類關聯的...

類的使用,物件的使用

一 類的使用 class student school luffycity def eat self print yes defdrink self print drink 檢視print student.dict 增student.teacher gaohui print student.dict...

messagebox的使用(使用整理)

定義 messagebox顯示乙個模態對話方塊,其中包含乙個系統圖示 一組按鈕和乙個簡短的特定於應用程式訊息,如狀態或錯誤的資訊。訊息框中返回乙個整數值,該值指示使用者單擊了哪個按鈕。messagebox hwnd hwnd text,caption pchar type word hwnd 訊息框...