Как я могу издеваться над статическими методами в Java 1.4?

Я использую JUnit с Mockito. PowerMock может имитировать статические методы, но не представляется возможным использовать его с Java 1.4, особенно потому, что ему нужны аннотации. .

Есть ли другая альтернатива?

Спасибо.


person Nicolas Font    schedule 03.03.2011    source источник
comment
Одной из альтернатив, которую кто-то (если не вы) должен рассмотреть, является обновление вашей целевой платформы Java. Java 1.5/5.0 вышла в 2004 году.   -  person Stephen C    schedule 03.03.2011
comment
Мы мигрируем, но пока застряли на 1.4.   -  person Nicolas Font    schedule 09.03.2011
comment
Если вы мигрируете, подождите, пока вы не мигрируете. До тех пор используйте простой, но уродливый подход.   -  person Stephen C    schedule 10.03.2011


Ответы (3)


(Здесь беззастенчивая самореклама) Есть проект PowerMock-Legacy, который позволяет использовать PowerMock в Java 1.4. Это немного многословно, и не все функции поддерживаются, но, возможно, стоит попробовать.

person Pablo Grisafi    schedule 06.03.2011
comment
Выглядит неплохо. Несмотря на то, что мне не хотелось бы издеваться над статическими методами, это, вероятно, лучший ответ на заданный вопрос. - person Nicolas Font; 09.03.2011

Лично я предпочитаю минимизировать использование моков. Если в вашем коде есть статический метод, я бы изменил его, чтобы сделать его более удобным для модульного тестирования. Может быть, он не должен быть статичным. Или, если это необходимо, возможно, вы могли бы использовать метод настройки, который определяет, как ведет себя статический метод.

Если статического метода нет в вашем коде, вам, вероятно, не повезло.

person Adam Crume    schedule 03.03.2011
comment
Я лично предпочитаю использование макетов, чтобы иметь возможность делать настоящие модульные тесты. Я согласен, что это не должно быть статичным, но, к сожалению, я не могу изменить это на данный момент. - person Nicolas Font; 09.03.2011

Попробуйте jMockit и дважды проверьте, можете ли вы реорганизовать код (или это устаревший код?) . Mockito говорит о насмешках над статическими методами

Mockito предпочитает объектную ориентацию и внедрение зависимостей статическому процедурному коду, который трудно понять и изменить. (Источник)

Проверьте также это связанное опубликовать особенно ответ Джона.

person Martin Dürrmeier    schedule 08.03.2011
comment
К сожалению, это устаревший код, который я пока не могу изменить. Но я согласен, долгосрочная цель — вообще не использовать статические методы. - person Nicolas Font; 09.03.2011