Вопрос

Я поискал на форуме и не нашел похожего вопроса.Я хочу принять окончательное решение о том, что наша система выбора макетов будет продвигаться вперед в качестве наилучшей практики - я остановил свой выбор на Moq...пока я только недавно не обнаружил, что MS наконец-то создала издевательский фреймворк под названием Moles, который, похоже, работает аналогично TypeMock через API профилировщика sexyness и т.д..

Здесь миллион тем "NMock vs Moq vs TypeMock vs Rhino ....".Но я никогда не видел, чтобы родинки были замешаны.На самом деле, я даже не знал о ее существовании до недавнего времени.Кто-нибудь им пользуется?В производстве?Кто-нибудь сбрасывал для этого свой старый издевательский фреймворк, и если да, то какой именно?Как это соотносилось с теми издевательскими фреймворками, которые вы использовали?

Спасибо..ps, мы используем VS2008 и вскоре переходим на 2010 год.

Это было полезно?

Решение

Я нахожусь в том же сценарии, что и вы, поэтому я хотел бы прокомментировать свой опыт.

И Typemock, и Moles преследуют цель изоляции.Особенно для этих надоедливых закрытых классов и невиртуальных методов.

Я считаю, что структура изоляции, подобная упомянутой выше, необходима, особенно если вы находитесь на более поздних этапах разработки и/или не имеете/незначительно контролируете базу кода.

Вот такие преимущества в Typemock я еще не обнаружил у Moles

  • Поддержка инструментов покрытия кода (Ncover и Partcover).
  • Поддержка перехвата/проверки частных лиц (методов/свойств) [да, это спорно]
  • Более совершенный продукт, быстро запускается и работает с интуитивно понятным API (до сих пор приходится возиться с Moles, чтобы хотя бы работать правильно)

Я надеюсь, что Moles превратится в выпущенный продукт, но начало моей работы с ним, похоже, ничем не отличается от других проектов MS Research;обычно не доработанный, но, похоже, такова природа проектов такого типа.

Другие советы

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

Что вы подразумеваете под «в производстве»?Кроты полезны только при модульном тестировании.Это серьезно влияет на производительность, а также допускает использование небезопасного кода в рабочей среде (когда-нибудь задумывались о замене функции IsAuthorized на возврат true?).

Родинки можно использовать как в 2008, так и в 2009 году.

Надеюсь, что это ответ на ваш вопрос.

Moles используется внутри Microsoft несколькими командами разработчиков.

Ну, может быть, есть несколько проблем с потоками, которые, кажется, возникают между ними, их очень трудно воспроизвести.Это в основном приводит к сбою по сравнению с 2010 годом, когда вы даже пытаетесь установить точку останова в подключенном процессе.Это случалось со мной несколько раз не только на одной машине, но и позже исчезало по неизвестной причине.

Поскольку происходит обход, отладка - это танец между вашим кодом и обходом, с которым может быть трудно справиться на начальном этапе, и если во время этого возникает исключение, то его просто трудно прервать на исключении.

Автоматически сгенерированные тесты и PUTs - трудно понять, какое сообщение они пытаются передать, т.е.должен ли быть изменен шаблон кодирования или что-то еще, поскольку, хотя он пытается сгенерировать параметризованный тест на основе интерфейса, но в зависимости от тестируемого класса, auuto gen PUTs может быть не лучшим способом использовать параметризованные тесты.

В целом, существует кривая обучения, плюс для разработки фреймворка также потребуется некоторое время.Положительная сторона, концепция хороша, затраты на обслуживание ( при правильной реализации ) и время отклика от команды поддержки PEX действительно положительные, иногда вы получаете полезный ответ в течение 2 часов на форуме PEX.

С наилучшими пожеланиями Йогеш Павар

Кроты и Пекс - это смена парадигмы !!слишком многого можно ожидать от бесплатного фреймворка.До сих пор я не нашел никаких причин не использовать его, если у вас нет кросс-технологической базы кода, но пока это .net, я молю, а Pex определенно является ответом !!

Если под «в производстве» вы подразумеваете использование его на продукте, который уже используется в производстве, то абсолютно точно!

Мы используем Moles для изоляции функциональности в наших модульных тестах в очень важном проекте для таких компаний, как Google и McDonalds.Конечно, модульные тесты не запускаются на рабочем сервере, поэтому Moles никогда не развертывается на производстве.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top