Я издевался над статическим методом класса, использующего Powermock в моем тестовом классе. Проблема, с которой я сталкиваюсь, заключается в том, что этот статический метод не вызывается непосредственно в моем тестовом классе, а в каком-то другом классе. Вот скелет:Передача издевающегося статического метода в другой класс
@Test public void myTest() {
PowerMockito.mockStatic(MyClassWithStaticMethod.class);
PowerMockito.when(MyClassWithStaticMethod.staticMethod()).thenReturn("...");
List<String> details = MyHelperClass.getDetails();
...
...
}
Теперь MyHelperClass.getDetails вызывает метод, который должен быть издевались, как это зависит от службы.
MyHelperClass.java
public static List<String> getDetails() {
...
...
MyObj obj = MyClassWithStaticMethod.staticMethod(); //This needs to return mocked value
...
...
}
Есть ли способ, чтобы передать высмеивал объект вспомогательного класса? PowerMockito.mockStatic возвращает void, где PowerMockito.mock не издевается над статическими методами. Таким образом, я не могу понять, как передать обманутый объект методу вспомогательного класса getDetails().
Спасибо тонну! Сначала я не решался использовать JMockit, поскольку mockito уже использовался, и я хотел найти решение, используя PowerMock с mockito. Я столкнулся с несколькими проблемами, связанными с запуском JMockit - мне пришлось обновить мой Junit до 4.12, поскольку JMockit поддерживает только JUnit 4.5+ (это плюс, но я надеюсь, что тесты Junit 4.4 в нашем коде не имеют того, что не поддерживается в 4.12). Но все проблемы были вполне достойны, чтобы подружиться с такой красотой, что JMockit! :) – Pankaj
Youre welcome :) – jdevelop
Тест должен быть проще писать с помощью JMockit, но он также должен отлично работать с PowerMock. Интересно, забыл ли OP использовать '@ PrepareForTest' на тестовом классе? –