PowerMockito проверяет, что статический метод никогда не вызывается - PullRequest
0 голосов
/ 09 мая 2018

Я пишу тест JUnit, чтобы убедиться, что статический метод (MyClass.myMethod()) никогда не вызывается в потоке метода. Я пытался сделать что-то вроде этого:

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

При этом я получаю исключение UnfinisedVerificationException. Как проверить, что MyClass.class не имеет никаких взаимодействий при выполнении метода?

Ответы [ 2 ]

0 голосов
/ 24 сентября 2018

Мне не удалось заставить это работать, используя Mockito.never().

Мне удалось заставить это работать, используя экземпляр NoMoreInteractions.

После вызова производственного метода и проверки всех вызовов статического метода, который был смоделирован, вызовите verifyStatic с экземпляром NoMoreInteractions в качестве второго аргумента.

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());

Если тестируемый класс вызывает myStaticMethod с чем-то отличным от foo, проверка завершается неудачно с сообщением о наличии непроверенных вызовов.

0 голосов
/ 09 мая 2018

UnfinishedVerificationException произойдет, если Класс еще не смоделирован, но вы пытаетесь проверить вызов его статического метода.

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

Это должно произойти, если поток никогда не встречает вызов MyClass.myMethod()

...