Имитация частного статического метода из конечного класса (служебный класс)

Я использую Mockito и PowerMock для тестирования своего Java-приложения. Мне было интересно, как я могу издеваться над частным статическим методом из финального класса. Я хочу имитировать Exception при доступе к одному методу, но единственный способ, который я нашел для этого, - это создание экземпляра класса и использование метода spy() из PowerMock.

Может ли кто-нибудь помочь / направить меня немного?


person hveiga    schedule 14.06.2013    source источник
comment
Если у вас есть контроль над закрытым статическим методом в финальном классе, вам может быть проще преобразовать метод в метод экземпляра в неконечном служебном классе. Если ваш код достаточно сложен, чтобы нуждаться в обработке исключений, он может быть достаточно сложным, чтобы быть самостоятельным мокабельным компонентом. (Может не относиться к вам, но может относиться к следующему кодировщику, который читает этот ответ.)   -  person Jeff Bowman    schedule 15.06.2013


Ответы (1)


Вот пример использования PowerMock для имитации общедоступных статических методов.

В случае частного метода где-то должен быть какой-то метод public static, который вызывает этот частный метод, так как вы не можете вызвать его напрямую. Если вас интересует только исключение, вы можете сгенерировать исключение раньше (возможно - много предположений)

person Peter Kofler    schedule 14.06.2013
comment
Я не вызываю этот метод из общедоступного статического, я вызываю его в статическом блоке, чтобы выполнить его при загрузке класса. Может быть, мне следует изменить это поведение... - person hveiga; 15.06.2013
comment
Хорошо, я не вижу полной картины, очевидно. Возможно, вставьте сюда полный фрагмент кода, содержащий вызывающую и вызываемую стороны. - person Peter Kofler; 15.06.2013
comment
Я изменил дизайн своего приложения, чтобы я мог делать то, что вы предложили в первую очередь. Спасибо вам за помощь! - person hveiga; 17.06.2013