powermock使用
公有方法mock
私有方法mock
準備:測試類繼承powermocktestcase,測試類新增註解,註解的大括號中為被測試私有方法的類,
@preparefortest()
mock:powermockito.donothing().when(uniqueservice, "checkactivateuniquecondition", role, uniquetype);
呼叫:私有方法使用反射的方法呼叫:boolean res = whitebox.invokemethod(heroservice, 「checklevel」, obj, herolevel);
靜態方法mock
準備:測試類繼承powermocktestcase,測試類新增註解,註解的大括號中為被測試靜態方法的類,
@preparefortest(),powermockito.mockstatic(uniqueservice.class)
mock: 由於mockstatic方法的作用,該類中所有的方法均被mock,方法返回的值是對應的零值,對於有些需要指定返回值的情況可以使用:
powermockito.when(masterstrokeservice.class,"getshopeventwithpoint",position).thenreturn(shopevent);
或
powermockito.when(masterstrokeservice.getshopeventwithpoint(position)).thenreturn(shopevent);(推薦)
需要真實執行:對於有些方法不想被mock,而整個類被已經被mock的情況:
powermockito.docallrealmethod().when(masterstrokeservice.class, "checkinitshop", role, eventid, pos);
(公有方法:powermockito.docallrealmethod().when(forgeservice).syncclientdata(this.role, record);
)
powermockito.when(masterstrokeservice.getlinetagbypoint(startpoint, endpoint)).thencallrealmethod();
(when中必須有返回值)
單元測試的驗證
驗證結果與預期相同:
assertequals(baseexception.gettype(), result);
驗證方法是否被執行
powermockito.verifyprivate(masterstrokeservice.class,mockito.atleastonce()).invoke("methodname", param1, param2);
mockito.verify(forgetaskmanager, mockito.atleastonce()).sendtaskreward(param1, param2);
測試中的其他需求
需要mock被mock的物件中的乙個成員時:
forgemanager = powermockito.mock(forgemanager.class);
forgeservice = powermockito.mock(forgeservice.class);
whitebox.setinternalstate(forgeservice, "forgemanager", forgemanager);
保證forgeservice呼叫forgemanager的物件時是被mock的。否則可能導致mock失敗,forgeservice的中的forgemanager物件與實際使用
的不一致。
希望方法執行中某些new生成的物件為指定的物件時:
random random = powermockito.spy(new random());
powermockito.whennew(random.class).withanyarguments().thenreturn(random);
powermockito.doreturn(randata).when(random, "nextfloat");
技術拓展
Vim 使用筆記
set hlsearch set nohlsearch 搜尋後清除上次的加亮 nohl nohlsearch 拷貝 很有用的一句話,規定了格式選項,讓它換行不自動空格 set formatoptions tcrqn set fo r set noautoindent 再 shift insert 正...
xemacs使用筆記
xemacs使用筆記 xemacs emacs的下一代,由lucid原創 from debian參考手冊.由於不知道什麼時候刪掉了emacs的乙個重要檔案.每次都沒法安裝好.突然發現了xemacs,於是決定使用看看.本人還是菜鳥,僅供交流 我使用的ubuntu系統,所以就直接apt get inst...
TreeView使用筆記
treeview由節點構成,建樹通過對treeview.items屬性進行操作。items是乙個ttreenodes物件,這是乙個ttreenode集。一 針對ttreenodes,也就是 treeview.items,有這些屬性 1 count,節點個數。2 item index 通過index得...