Junit 为什么我可以验证静态方法20次,但它没有';你不会失败吗?

Junit 为什么我可以验证静态方法20次,但它没有';你不会失败吗?,junit,mockito,powermock,Junit,Mockito,Powermock,这是我的测试代码: public void testApplyListWhenAddTheSameIDThenReturnDuplicateEntityException()时{ MyEntity entityRCM=CreateMEntity(年龄、体重、身高、体重); entityModel.addEntity(entityRCM); MyEntity entityOPC=CreateMEntity(不同年龄、重量、0升); EntityCreate create=新建EntityCreat

这是我的测试代码:

public void testApplyListWhenAddTheSameIDThenReturnDuplicateEntityException()时{
MyEntity entityRCM=CreateMEntity(年龄、体重、身高、体重);
entityModel.addEntity(entityRCM);
MyEntity entityOPC=CreateMEntity(不同年龄、重量、0升);
EntityCreate create=新建EntityCreate(entityOPC);
List changeList=new ArrayList();
变更列表。添加(创建);
试一试{
entityModel.apply(变更列表);
失败();
}捕获(重复实体异常e){
PowerMockito.verifyStatic(次(20));
错误(Mockito.anyObject(),Mockito.anyString(),Mockito.anyObject());
}
}
问题在于:

PowerMockito.verifyStatic(times(20));
LogManager.error(Mockito.<Logger>anyObject(),Mockito.anyString(),Mockito.<DuplicateEntityException>anyObject());
PowerMockito.verifyStatic(次(20));
错误(Mockito.anyObject(),Mockito.anyString(),Mockito.anyObject());

我想在class
LogManager
中验证一个静态方法
error
,但是如何验证这个方法20次却没有失败。

在注释中解决:

你加了吗?如果没有,那么您可能已经设置了匹配器和静态调用,但是PowerMock在测试完成之前从未看到对mock的实际调用


对于上下文,PowerMock通过截取类加载器并加载一个替换类(调用PowerMock提供的实现而不是原始实现)来模拟静态类。除非您添加正确的准备,否则PowerMock不会替换该类,因此它不会计算静态方法调用或识别要验证的方法,并且测试将在验证调用实际发生之前完成。

您添加了吗?如果没有,那么您可能已经设置了匹配器和静态调用,但是PowerMock在测试完成之前从未看到对mock的实际调用。是的,谢谢。我通过添加mockStatic(LogManager.class)解决了这个问题。这就是您所说的“从未看到对mock的实际调用”,我尝试在没有mockStatic()的情况下验证static()