Как мы можем высмеивать частные методы, не используя power mockito?

Можем ли мы высмеивать частные методы, не используя powermockito. Я знаю, что это возможно, хотя powermockito, но просто хотел проверить со всеми, возможно ли это каким-либо другим способом. Спасибо -Сэм

1 ответ

Решение

По своей конструкции это невозможно без PowerMockito или подобного инструмента.

Посмотрите Вики Мокито, где они приводят следующие причины:

  1. Это требует взлома загрузчиков классов, который никогда не является пуленепробиваемым, и это меняет API (вы должны использовать пользовательский тестовый прогон, комментировать класс и т. Д.).

  2. Обойти это очень легко - просто измените видимость метода с частного на пакетный (или защищенный).

  3. Требуется, чтобы команда потратила время на его внедрение и поддержание. И не имеет смысла данный пункт (2) и тот факт, что он уже реализован в другом инструменте (powermock).

  4. Наконец... Пересмешивание частных методов - это намек на то, что с объектно-ориентированным пониманием что-то не так. В ОО вы хотите, чтобы объекты (или роли) сотрудничали, а не методы. Забудьте про паскаль и процедурный код. Думай об объектах.

Конечно, есть случаи, когда невозможно обойти это, но просто сделайте шаг назад и

  1. Убедитесь, что вы тестируете правильные вещи (если вы тестируете частные методы вместо общедоступных)
  2. Подумайте только об изменении этих методов, чтобы они стали частными, а не полагались на PowerMock.

Да, мы можем использовать для этого Reflection API, предоставляемый поставщиком Java.

Другие вопросы по тегам