TestNG + Mockito + PowerMock - verifyStatic () не работает
Я новый TestNG и юнит-тестирование в целом. Я использую TestNG 6.9.6 с Mockito 1.10.19 и PowerMock 1.6.4. Я хочу проверить, является лиmyMethod()
метод вMyService
класс внутренне вызывает статический методUtil.myStaticMethod
с правильными аргументами. Поскольку проверка статических методов не поддерживается в Mockito, я использую PowerMock вместе с ним. Мой тестовый класс показан ниже:
public class MyTest
{
private MyService myService;
@Captor ArgumentCaptor<String> argCaptor;
@BeforeMethod
public void setup()
{
MockitoAnnotations.initMocks( this );
myService = new MyService();
}
@Test
@PrepareForTest(MyService.class)
public void myTest()
{
PowerMockito.mockStatic(Util.class);
myService.myMethod("arg");
PowerMockito.verifyStatic(10);
Util.myStaticMethod(anyString());
}
}
Ожидается, что этот тест не пройден, так какmyMethod
вызывает статический методUtil.myStaticMethod()
только однажды. Но когда я запускаю тест, он всегда проходит, независимо от того, какое значение я передаюPowerMockito.verifyStatic()
.
Кроме того, если я пишу другой метод теста в этом классе, а затем запускаю тест, я получаю следующую ошибку
org.mockito.exceptions.misusing.UnfinishedVerificationException:
Missing method call for verify(mock) here:
-> at mypackage.MyTest.myTest(MyTest.java:21)
Example of correct verification:
verify(mock).doSomething()
Also, this error might show up because you verify either of: final/private/equals()/hashCode() methods.
Those methods *cannot* be stubbed/verified.
Mocking methods declared on non-public parent classes is not supported.
at mypackage.MyTest.myTest.setup(MyTest.java:10)
Results :
Failed tests:
MyTest.setup:10 UnfinishedVerification
Missing method call for ver...
Tests run: 3, Failures: 1, Errors: 0, Skipped: 1
Это терпит неудачу вverifyStatic()
метод, который заставляет меня думать, что метод verifyStatic () нуждается в чем-то большем, чего я не предоставляю. Кроме того, оно показывает общее количество тестов как 3, тогда как в этом случае у меня есть только два метода тестирования.
Любая помощь будет оценена.
РЕДАКТИРОВАТЬ : Как и предполагалось, я попытался положитьMyUtil
класс в@PrepareForTest
аннотации, это все равно дает ту же ошибку.