PowerMockito 验证是否永远不会调用静态方法



我正在编写一个JUnit测试来验证静态方法(MyClass.myMethod()(是否永远不会在方法流中调用。我尝试做这样的事情:

PowerMockito.verifyStatic(Mockito.never());
MyClass.myMethod(Mockito.any());

在这样做时,我收到一个未确定的验证异常。如何测试 MyClass.class 在方法执行中没有任何交互?

如果未模拟该类,但您正在尝试验证其静态方法的调用,则会发生未完成验证异常。

PowerMockito.mockStatic(MyClass.class);
underTest.testMethod();
PowerMockito.verifyStatic(Mockito.never());
MyClass.myMethod(Mockito.any());
.
.
.

如果流从未遇到对MyClass.myMethod()的调用,则此操作应该会成功

我无法使用Mockito.never().

我能够使用NoMoreInteractions的实例使其工作。

调用生产方法并验证对模拟的静态方法的所有调用后,使用NoMoreInteractions实例作为第二个参数调用verifyStatic

mockStatic(MyClassWithStatic.class);
when(MyClassWithStatic.myStaticMethod("foo")).thenReturn(true);
instanceOfClassBeingTested.doIt();
verifyStatic(MyClassWithStatic.class, times(1));
MyClassWithStatic.myStaticMethod("foo");
verifyStatic(MyClassWithStatic.class, new NoMoreInteractions());
MyClassWithStatic.myStaticMethod(Mockito.anyString());

如果被测试的类调用myStaticMethodfoo以外的任何内容,则测试失败,并显示一条消息,指出存在未经验证的调用。

最新更新