2013-03-06 4 views
0

Проблема следующая: мне нужно проверить метод methodTest() частного класса. methodTest() call static method staticExternal() внешняя библиотека. Как заменить staticExternal() на mockLocal(), если я использую JMock и EasyMock, но класс, который содержит staticExternal() не интерфейс?Как издеваться над статическим методом с помощью junit и easymock

P.S. PowerMock нельзя использовать.

+0

возможно этот вопрос уже ответил в [эти] (http://stackoverflow.com/questions/3162551/how-do-i-mock-static-methods-in-a-class-with-easymock) [два ] (http://stackoverflow.com/questions/218813/jmock-mocking-a-static-method) –

+0

Почему вы отвергаете PowerMock, когда это простое и правильное решение проблемы, которая у вас есть? Если вы хотите получить ограниченный ответ, вам придется объяснить, почему. –

+0

@AndrewAylett Я знаю, что PowerMock - хорошая структура. К сожалению, у меня такое упражнение. Спасибо всем! – blackhard

ответ

3

Вы не можете, насколько мне известно. В принципе, этот код трудно проверить. Вы должны рассмотреть вопрос об извлечении зависимости, где «нормальная» реализация этой зависимости вызывает статический метод.

Принципиально, статические вызовы методов трудно заменить именно потому, что они являются статическими. Инструменты, такие как PowerMock, должны бороться с кишками Java (заменяя загрузчики классов и т. Д.), Чтобы перехватывать вызовы статических методов. По-моему, обычно лучше реорганизовать свой код, чтобы он мог тестироваться без такого рода вещей.