Mockito предпочтительный по EasyMock? [закрытый]

21
задан palacsint 9 May 2013 в 16:43
поделиться

3 ответа

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

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

6
ответ дан 29 November 2019 в 20:55
поделиться

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

На мой взгляд, преимущества Mockito следующие:

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

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

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

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

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

7
ответ дан 29 November 2019 в 20:55
поделиться

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

  • Given (контекст, в котором выполняется ваш модульный тест)
  • When (события, вызывающие интересующее вас поведение)
  • Then (результат, который вы ищете).

в отличие от

  • Given
  • Expect (здесь происходит проверка)
  • When
  • Then (вернитесь и посмотрите, что вы написали в Expect, потому что здесь нет фактической информации).

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

22
ответ дан 29 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: