那是我的测试代码:
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
,但如何验证此方法20次,但它不会失败。
答案 0 :(得分:0)
在评论中解决:
您添加
@PrepareForTest
andmockStatic
了吗?如果没有,那么您可能已经设置了匹配器和静态调用,但PowerMock在测试完成之前从未看到实际的模拟调用。
对于上下文,PowerMock通过拦截类加载器并加载调用PowerMock提供的实现而不是原件的替换类来模拟静态类。除非您添加正确的准备工作,否则PowerMock不会替换该类,因此它不会计算静态方法调用或确定要验证的方法,并且测试将在验证调用实际发生之前完成。