Как мы можем высмеивать частные методы, не используя power mockito?
Можем ли мы высмеивать частные методы, не используя powermockito. Я знаю, что это возможно, хотя powermockito, но просто хотел проверить со всеми, возможно ли это каким-либо другим способом. Спасибо -Сэм
1 ответ
По своей конструкции это невозможно без PowerMockito или подобного инструмента.
Посмотрите Вики Мокито, где они приводят следующие причины:
Это требует взлома загрузчиков классов, который никогда не является пуленепробиваемым, и это меняет API (вы должны использовать пользовательский тестовый прогон, комментировать класс и т. Д.).
Обойти это очень легко - просто измените видимость метода с частного на пакетный (или защищенный).
Требуется, чтобы команда потратила время на его внедрение и поддержание. И не имеет смысла данный пункт (2) и тот факт, что он уже реализован в другом инструменте (powermock).
Наконец... Пересмешивание частных методов - это намек на то, что с объектно-ориентированным пониманием что-то не так. В ОО вы хотите, чтобы объекты (или роли) сотрудничали, а не методы. Забудьте про паскаль и процедурный код. Думай об объектах.
Конечно, есть случаи, когда невозможно обойти это, но просто сделайте шаг назад и
- Убедитесь, что вы тестируете правильные вещи (если вы тестируете частные методы вместо общедоступных)
- Подумайте только об изменении этих методов, чтобы они стали частными, а не полагались на PowerMock.
Да, мы можем использовать для этого Reflection API, предоставляемый поставщиком Java.