Я изучаю, какой фреймворк использовать для моего проекта, и сузил его до JMockit и Mockito .
Я заметил, что Mockito был признан " лучшим фреймворком для Java " на Stackoverflow.
При сравнении функций « Матрицы сравнения инструментов Mocking Tool » JMockit кажется, что JMockit имеет несколько различных функций.
Есть ли у кого-нибудь конкретная информация (а не мнения) о том, что может делать Mockito , чего нельзя достичь с помощью JMockit и наоборот?
Ответы:
Обновление, сентябрь 2019 г .: Единственный фреймворк для фиксации, поддерживаемый (по умолчанию) Spring Boot, - это Mockito . Если вы используете Spring, ответ очевиден.
Я бы сказал, что конкуренция идет между JMockit и PowerMock , затем Mockito .
Я бы оставил "простые" jMock и EasyMock, потому что они используют только прокси и CGLIB и не используют инструменты Java 5, как более новые фреймворки.
У jMock также не было стабильной версии более 4 лет. jMock 2.6.0 потребовалось 2 года для перехода от RC1 к RC2, а затем еще 2 года, прежде чем он был выпущен.
Что касается прокси и CGLIB по сравнению с инструментарием:
Вышеупомянутое скопировано с http://jmockit.org/about.html . Кроме того, он сравнивает себя (JMockit), PowerMock и Mockito несколькими способами:
(конечно, источник может быть предвзятым, но что ж ...)
Я бы посоветовал пойти с JMockit . Это самый простой в использовании, гибкий и работает практически во всех случаях, даже в сложных и сценариях, когда вы не можете контролировать тестируемый класс (или вы не можете его сломать из-за соображений совместимости и т. Д.).
Мой опыт работы с JMockit был очень положительным.
источник
-javaagent
флага с версии 1.42, потому что вы больше не можете самостоятельно подключаться, начиная с Java 9, и поиск подходящих обходных путей, очевидно, не входил в компетенцию разработчика. Другой момент заключается в том, что JMockit больше не позволяет имитировать частные методы и конструкторы, в то время как PowerMock делает afaik.Я работал как с Mockito, так и с JMockit, и мой опыт работы с ними:
Mockito:
EasyMock:
JMockit:
Кроме того, другие преимущества JMockit:
Лично я предпочитаю JMockit, который, на мой взгляд, более многофункциональный и гибкий, но требует более крутого обучения. Обычно существует несколько способов добиться одного и того же эффекта издевательства, и при их разработке требуется больше внимания.
источник
Я использую jMockit только потому, что он содержит библиотеки отражения в Deencapsultation.class. Мне действительно нравится стиль Mockito, но я отказываюсь менять свой код и запутывать свой API только для того, чтобы ограниченная среда тестирования могла это сделать. И я фанат тестирования всего своего кода, поэтому фреймворк, который не может легко тестировать частные методы, - это не то, что я хочу использовать.
Я был потрясен этой статьей
После (по общему признанию большой) кривой обучения jMockit теперь является моей основной средой модульного тестирования для моков.
источник
Для легкого тестирования нашей устаревшей кодовой базы (с большим количеством вызовов статических методов и т. Д.) JMockit оказался бесценным. [Бесстыдный плагин для статьи в моем блоге]
источник
Лично я предпочитаю EasyMock .
Одна из моих любимых функций - возможность переключаться между красивым, нормальным и строгим имитирующим управлением.
источник