Как мы можем издеваться над частными методами, не используя power mockito - PullRequest
0 голосов
/ 17 сентября 2018

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

Ответы [ 2 ]

0 голосов
/ 16 июля 2019

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

0 голосов
/ 17 сентября 2018

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

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

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

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

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

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

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

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