У JMockit есть какие-либо недостатки? - PullRequest
16 голосов
/ 05 июня 2010

Это сравнение показывает, что JMockit имеет несколько преимуществ перед другими фреймворками.

Есть ли какие-либо преимущества, которые есть у одного из других (JMock, EasyMock, Mockito, Unitils, PowerMock + Mockito / EasyMock) перед JMockit?

Ответы [ 2 ]

16 голосов
/ 21 сентября 2011

Я недавно принял проект, использующий JMockit, и я думаю, что качество кода, безусловно, пострадало из-за способности библиотеки макетировать статические и частные методы.

Тесты очень хрупкие, потому что тестируются детали реализации, содержащиеся в частных методах (поэтому, если я изменю как класс делает что-то, он может нарушить тесты, даже если что класс не был затронут).

Код также изобилует вызовами статических методов - если бы разработчики не имели возможности их смоделировать, то я думаю, что они приложили бы больше усилий для того, чтобы разделить вещи немного лучше.

14 голосов
/ 05 июня 2010

Три недостатка:

  • Вы должны использовать Java-агент для инструментирования байт-кодом.
  • Вы не можете использовать подписанный файл junit.jar, поставляемый с Eclipse.
  • Вы должны изучить фиктивный API.(В отличие от объекта-заглушки)

Вы всегда можете обсудить, хорошо ли иметь возможность издеваться над конечным классом, таким как JMockit.Если это не унаследованный код, рефакторинг обычно является лучшей альтернативой.

В таких средах разработки, как Eclipse, я использую инструментальную поддержку для генерации заглушек внутри тестового класса чаще, чем для имитации (JMockit, Mockito и т.недавнее времяПреимущество такого подхода в том, что он очень прост.Это особенно приятно, когда у вас есть команда со многими разработчиками, и некоторые из них не любят тестировать и не имеют особой мотивации для изучения фальшивых фреймворков.Кроме того, реализации заглушки не имеют рамочных ограничений!

Если вы открыты для заглушки в качестве альтернативы, вам следует проверить блог Роберта Мартина о насмешках и заглушках здесь и здесь

Иначе, это выглядит очень хорошо!Хотя у меня есть только опыт работы с JMock, EasyMock и базовые знания с JMockit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...