Я начал таким же образом (писал макеты вручную), и к настоящему времени я почти полностью переключился на EasyMock.
Я считаю, что использование EasyMock обычно одновременно быстрее и гибче.
Как правило, в первый раз, когда мне нужен макет, я могу создать его в несколько строк кода с помощью EasyMock, тогда как вручную мне нужно реализовать необходимый интерфейс (достаточно справедливо, это может быть сгенерировано в IDE, например, IntelliJ) изатем добавьте необходимый код, чтобы получить требуемый ответ и / или позволить ощутить воздействие вызовов на него.
Хорошо, можно сказать, что это единовременные затраты.В следующий раз, когда я смогу просто счастливо использовать написанное вручную издевательство, я обнаружил, что это часто не так.В другом тесте мне может понадобиться макет того же класса с другим поведением.Например, вызываются разные методы и / или ожидается другой результат.Конкретный случай - это когда в одном тестовом примере макет генерирует исключение, но не в другом.Хорошо, я могу добавить некоторые параметры, которые динамически управляют поведением.Затем для следующего теста, еще несколько параметров для управления большим поведением ... так что в итоге я получаю все более сложную фиктивную реализацию, которая является зависимостью для еще большего количества модульных тестов, что также создает риск непреднамеренного нарушения старых тестов.
В отличие от этого, с EasyMock я могу настраивать свои макеты независимо для каждого теста.Таким образом, поведение явно контролируется и отображается внутри самого кода модульного теста, и нет риска побочных эффектов.
Не говоря уже о том, что с EasyMock вы можете проверить, что требуемые методы вызываются в требуемом порядке,если вам нужно (и я, каждый сейчас и потом).Реализация этого вручную (особенно в общем виде) будет довольно болезненной для шеи, без дополнительной выгоды.