Три недостатка:
Вы всегда можете обсудить, хорошо ли это - иметь возможность издеваться над конечным классом, как это делает JMockit. Если только это не старый код, рефакторинг обычно является лучшей альтернативой.
В последнее время в таких IDE, как Eclipse, я чаще использую поддержку инструментов для генерации заглушек внутри тестового класса, чем насмешки (JMockit, Mockito и т.д.). Преимущество этого подхода в том, что он очень прост. Это особенно хорошо, когда у вас в команде много разработчиков, и некоторые из них не любят тестирование и не имеют достаточной мотивации для изучения mocking-фреймворка. Кроме того, реализации заглушек не имеют ограничений фреймворка!
Если вы готовы использовать заглушки в качестве альтернативы, вам стоит заглянуть в блог Роберта К. Мартина о мокинге и заглушках здесь и здесь
В остальном, это выглядит очень хорошо! Хотя у меня есть только опыт работы с JMock, EasyMock и базовые знания о JMockit.
Недавно я принял проект, использующий JMockit, и я думаю, что качество кода, безусловно, пострадало из-за способности библиотеки макетировать статические и частные методы.
Тесты очень хрупкие, потому что тестируются детали реализации, содержащиеся в частных методах (поэтому, если я изменю , как класс делает что-то, он может нарушать тесты, даже если что ] класс не был затронут).
Код также изобилует вызовами статических методов - если бы разработчики не имели возможности их смоделировать, то я думаю, что они приложили бы больше усилий, чтобы разделить вещи немного лучше.