PowerMockito.spy(SomeClass.class);
PowerMockito.doNothing().when(SomeClass.class);
SomeClass.StaticVoidMethod();
Это не работает. Я получаю UnfinishedStubbingException.Как заглушить статические методы void, у которых нет аргументов?
PowerMockito.spy(SomeClass.class);
PowerMockito.doNothing().when(SomeClass.class);
SomeClass.StaticVoidMethod();
Это не работает. Я получаю UnfinishedStubbingException.Как заглушить статические методы void, у которых нет аргументов?
Если вы действительно не можете изменить «проверенный код»; и что статический вызов дает вам проблемы, тогда ваш единственный вариант - использовать PowerMock; и, как показывает другой ответ, их documentation дает точное описание, как это сделать (и для записи: внимательно прочитайте и следуйте этим инструкциям).
Но вы должны понимать, что PowerMock «дороже» по сравнению с другими насмешливыми фреймворками; например: вы не можете комбинировать PowerMock с Mockito красиво. Конечно, есть PowerMockito; но эта оснастка работает только с довольно устаревшими версиями Mockito.
Короче говоря: PowerMock может решить эту проблему; но не удивляйтесь, когда вы создадите другие проблемы для вас в конечном итоге.
Спасибо! Ты прав! – mhsree
Вы не совсем закончили предложение Мокито. Вы забыли указать заглушку, какой метод он будет вызывать.
Чтобы завершить предложение ... не забудьте вызвать вызов метода в конце.
PowerMockito.doNothing().when(SomeClass.class).StaticVoidMethod();
Вы можете использовать
PowerMockito.mockStatic(SomeClass.class)
Это будет издеваться все методы этого класса.
Для получения дополнительной информации перейдите по этой ссылке https://github.com/powermock/powermock/wiki/MockStatic
Ура !!!
Необходимое средство для издевательства статических методов - это общий запах кода, предлагающий вам переместить этот метод в интерфейс или класс, чтобы вы могли ввести макет или фальшивый экземпляр и передать * этот * в тестируемый код, а не фальсифицировать статический метод глобально. – dimo414
Невозможно изменить код, так как он не написан мной. Любые предложения о том, как проверить это? – mhsree
«Это не написано мной». Это происходит из сторонней библиотеки? Пожалуйста, дайте более подробную информацию. – davidxxx