0
這是我的測試代碼:爲什麼我可以驗證靜態方法20次,它不會失敗?
public void testApplyListWhenAddTheSameIDThenReturnDuplicateEntityException(){
MyEntity entityRCM = createMyEntity(AGE_ID, WEIGHT_ID, 0L);
entityModel.addEntity(entityRCM);
MyEntity entityOPC = createMyEntity(DIFF_AGE_ID, WEIGHT_ID, 0L);
EntityCreate create = new EntityCreate(entityOPC);
List<EntityChange> changeList = new ArrayList<EntityChange>();
changeList.add(create);
try {
entityModel.apply(changeList);
fail();
}catch(DuplicateEntityException e) {
PowerMockito.verifyStatic(times(20));
LogManager.error(Mockito.<Logger>anyObject(),Mockito.anyString(),Mockito.<DuplicateEntityException>anyObject());
}
}
的問題是在這裏:
PowerMockito.verifyStatic(times(20));
LogManager.error(Mockito.<Logger>anyObject(),Mockito.anyString(),Mockito.<DuplicateEntityException>anyObject());
我想驗證一個靜態方法error
在LogManager
類,但我怎麼能確認這個方法了二十次,但不會失敗。
您是否添加了['@ PrepareForTest'和'mockStatic'](https://code.google.com/p/powermock/wiki/MockitoUsage#Mocking_Static_Method)?如果沒有,那麼你可能已經設置了你的匹配器和靜態調用,但是PowerMock在你的測試完成之前從不會看到實際的調用模擬。 –
是的,謝謝。我已經通過添加mockStatic(LogManager.class)解決了這個問題。並且這就是你所說的「永遠不會看到實際的模擬調用」,我試圖在沒有mockStatic()的情況下verifyStatic() –