Подтвердить что ты не робот

Мокито предпочитает EasyMock?

Недавно я перешел на платформу Mockito и очень доволен ею (см. также blog-post). Переключение с EasyMock на Mockito было очень простым, и мне удалось сделать тесты совместимыми (т.е. Тестовые примеры ведут себя одинаково).

Вы видите реальные причины или критерии перестрелки, чтобы предпочесть EasyMock над Mockito? Пока кодовая база, с которой я работал, не могу, но меня интересует ваша точка зрения.

4b9b3361

Ответ 1

Mockito был разработан для обеспечения модульного тестирования в стиле BDD, то есть:

  • Учитывая (контекст, в котором выполняется ваш unit тест)
  • Когда (события, вызывающие поведение, которое вас интересует)
  • Затем (результат, который вы ищете).

в отличие от

  • При
  • Ожидайте (здесь, когда проверка завершена)
  • Когда
  • Затем (вернитесь и посмотрите, что вы написали в Expect, потому что здесь нет никакой информации).

IMHO создает более читаемые тесты и позволяет вам разделить такие вещи, как контекст, в котором вы работаете (настройка Mocks), и проверка поведения, которое вас интересует. Предыдущие фальшивые фреймворки потребовали от вас настроить ожидания для каждого взаимодействия, независимо от того, относится ли это к аспекту поведения, на которое вы смотрели в этом тесте, или нет.

Ответ 2

Я больше знаком с EasyMock, чем с Mockito, поэтому мне пришлось немного копаться. Mockito имеет страницу, которая делает явное сравнение с точки зрения Mockito.

Как я вижу, преимущества Mockito:

  • Явное разделение заглушки и проверки
  • Матчи основаны на Hamcrest (также поддерживаются JUnit) вместо пользовательского API
  • Созданные mocks всегда "хороши"; то есть вызовы методов, которые не сбрасываются, возвращают чистые данные (например, пустой список) вместо отказа

EasyMock имеет очень похожий набор функций. Основные отличия для Mockito основаны на тех областях EasyMock, которые, по мнению команды Mockito, были ограничениями или субоптимальными практиками.

С функциональной точки зрения ни один продукт не может издеваться над статическими методами (мне нужно было это сделать для тестирования без MBeanServer), но в этом случае вы можете использовать PowerMock поверх любой фреймворка.

Я бы сказал, иди в зависимости от того, какой стиль соответствует вашим требованиям тестирования.

Надеюсь, это поможет!

Ответ 3

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

Это не значит, что с этим что-то не так. Версия, которую я использовал, все еще работает нормально, хотя с тех пор я вернулся в EasyMock.