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

Rhino mock vs Typemock против JustMock vs

Мне нужно выбрать mock framework для нового проекта.

Каковы преимущества и недостатки этих рамок? Любая таблица сравнения?

Я знаю, что JustMock - это бета-стадия, но сейчас она очень хорошо выглядит (очень похоже на TypeMock).

Изменить: I'v Что относительно MS Mole?

4b9b3361

Ответ 1

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

RhinoMocks Moq) - оба с открытым исходным кодом могут использовать проекты, которые могут создавать поддельные объекты, наследуя тип, что означает, что они не могут подделывать статические методы, структур и закрытых классов.

Typemock Isolator использует профилировщик CLR для перехвата вызовов .NET и изменения их во время выполнения и может подделывать практически все. Typemock также может подделывать объекты, которые вы не можете "достичь" из теста, потому что они создаются внутри производственного кода. Некоторые называют это "черной магией", но другие находят способность подделывать практически все, включая сторонние библиотеки и устаревший код. Обязательно.

JustMock - новый игрок и сейчас только в бета-версии - он имеет некоторые из Typemock Isolator и может работать без API-интерфейса профилировщика - в этом режиме он точно так же, как RhinoMocks. Пока еще не выяснено, какой объем возможностей Typemock Isolator действительно имеет. Прямо сейчас кажется, что это хороший старт в правильном направлении, но у него все еще есть какое-то расстояние до того, как он станет допустимым вариантом.

Ответ 2

Недавно я переключился с RhinoMocks на Moq.

Оба имеют схожие возможности, но Moq имеет много чистого API

Ответ 3

[Отказ от ответственности - я работаю в Telerik]

Всего несколько баллов о JustMock. Его API больше похож на Moq API, чем на RhinoMocks, поэтому, если вы знакомы с Moq, у вас не должно быть проблем с обучением JustMock. То, что мы пытались сделать лучше в JustMock, - это иметь лучшую историю, когда насмехаются последовательные вызовы, например. Кроме того, как уже упоминалось, JustMock позволяет обманывать статические классы и методы/свойства, закрытые классы, не виртуальные методы и свойства и т.д., Используя тот же синтаксис Moq-like. Также благодаря этому в JustMock можно сделать частичную насмешку.

Btw, "черная магия", о которой упоминал Дрор, также возможна при использовании JustMock, если вы ссылаетесь непосредственно на сборку Telerik.CodeWeaver.Hook, но, к сожалению, это не документировано на данный момент. Если кто-то захочет это сделать, он может открыть билет поддержки, и мы будем рады помочь.

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

Ответ 4

Также проверьте Microsoft Moles, среду изоляции .NET, которая позволяет заменить любой .NET-метод на пользовательский делегат.

Moles имеет версию, которая может использоваться для коммерческих проектов и поддерживается в Visual Studio 2008 и 2010.

Ответ 5

Также смотрите: https://stackoverflow.com/questions/37359/what-c-mocking-framework-to-use/2608634#2608634

В настоящее время я тестирую Unit Testing в Moq, и я должен сказать, что это работает очень хорошо! - перефразируйте: он отлично работает! Я не использовал какие-либо другие издевательские рамки, которые вы упомянули, поэтому я не могу дать вам сравнение. Но я могу сказать, что я рад, что выбрал Moq в качестве своей первой в мире модели. Выражения lamda действительно приятны, а также очень легкие и удобные для чтения (синтаксис записи/воспроизведения в большинстве других насмешливых фреймворков на самом деле не делает вашу читабельность какой-либо хорошей)

Кроме того (и это немного не по теме), я буду использовать Ninject в ближайшем будущем как IoC Container, и обе структуры идут рука об руку. Ninject также имеет Lamda, и он даже обеспечивает автоматическую подделку поддержки контейнера для Moq (с использованием расширения). Поэтому, если вы планируете использовать контейнер IoC, вы можете проверить эту замечательную комбинацию:]

Ответ 6

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

TypeMock не является бесплатным (я думаю). Однако TypeMock отлично работает, если вы хотите, например, проверить устаревший код с частными или статическими типами членов. Другие издевательские рамки не могут этого сделать. Недостатком является то, что он не заставляет вас писать тестовый код, который имеет другие преимущества, которые просто проверяются.

Я не знаю JustMock, поэтому не могу сказать вам, как это работает.

Я бы посоветовал вам попробовать их всех и выбрать тот, с которым вам удобно. Однако, если вам нужно проверить устаревший код, выберите, чем TypeMock.

Я надеюсь, что другие предоставят вам более подробную информацию.