Я должен выбрать ложную платформу к новому проекту.
Каковы за и против для тех платформ? Какая-либо сравнительная таблица?
Я знаю, что JustMock - я стадия отладки, но это - взгляд, очень хороший прямо сейчас (очень похожий на TypeMock)
Править: I'v что относительно родинки MS?
До появления JustMock этот вопрос задавали, и ответы на можно найти здесь . Есть очень хорошее сравнение фреймворков - у него нет JustMock пока нет, но вы можете увидеть синтаксис и возможности каждой макетной платформы .NET.
RhinoMocks (и Moq ) являются проектами с открытым исходным кодом, которые могут создавать поддельные объекты путем наследования типа, что означает, что они не могут подделывать статические методы, структуры и закрытые классы.
Typemock Isolator использует профилировщик CLR для перехвата вызовов .NET и изменения их во время выполнения и может подделать практически все. Typemock также может подделывать объекты, к которым вы не можете "добраться" из теста, потому что они создаются внутри производственного кода. Некоторые называют это "черной магией", но другие находят возможность подделать практически все, включая сторонние библиотеки и устаревший код - обязательно.
JustMock - новый проигрыватель, и сейчас он только в бета-версии - в нем есть часть Typemock Isolator и он может работать без профилировщика API - в этом режиме он такой же, как RhinoMocks. Это еще не все. обнаружил, сколько возможностей Typemock Isolator он действительно имеет. Прямо сейчас кажется, что это хорошее начало в правильном направлении, но еще предстоит пройти некоторый путь, прежде чем он станет действительным вариантом.
См. Также: https://stackoverflow.com/questions/37359/what-c-mocking-framework-to-use/2608634# 2608634
Я сейчас занимаюсь модульным тестированием в Moq, и должен сказать, что это работает очень хорошо! - перефразирую: отлично работает! Я не использовал другие фреймворки для фиксации, которые вы упомянули, поэтому не могу дать вам сравнения. Но я могу сказать, что я рад, что выбрал Moq в качестве своего первого тестового фреймворка для создания макетов. Ламда-выражения действительно хороши, а также довольно легки и удобны для чтения (синтаксис записи / воспроизведения в большинстве других фреймворков имитирования на самом деле не улучшает вашу читаемость)
Кроме того (и это немного не по теме) В ближайшем будущем я буду использовать Ninject в качестве контейнера IoC, и оба фреймворка идут рука об руку.У Ninject также есть Lamda, и он даже обеспечивает поддержку контейнеров с автоматическим имитированием для Moq (с использованием расширения). Так что, если вы также планируете использовать контейнер IoC, вы можете проверить эту замечательную комбинацию:]
Недавно я перешел с RhinoMocks на Moq.
Оба имеют схожие возможности, но Moq имеет гораздо более чистый API
Также проверьте Microsoft Moles , среду изоляции для .NET, которая позволяет заменять любые .NET с настраиваемым делегатом.
Moles имеет версию, которую можно использовать в коммерческих проектах и которая поддерживается в Visual Studio 2008 и 2010.
Я не скажу вам, что лучше, потому что у каждого есть свои плюсы и минусы. Я всегда использовал Rhino Mocks, потому что это бесплатно, и вокруг есть отличное сообщество, и мне легко найти любую помощь.
TypeMock не является бесплатным (я полагаю). Однако TypeMock отлично подходит, если вы хотите, например, протестировать устаревший код с частными или статическими типами членов. Другие фреймворки mocking не могут этого сделать. Недостатком является то, что это не заставляет вас писать тестируемый код, который имеет другие преимущества, кроме тестируемости.
Я не знаю JustMock, поэтому не могу сказать вам, как это работает.
Я бы посоветовал вам попробовать их все и выбрать ту, с которой вам будет комфортно. Однако, если вам нужно протестировать устаревший код, выберите TypeMock.
Я надеюсь, что другие дадут вам более подробную информацию.
[Заявление об ограничении ответственности - я работаю в Telerik]
Несколько слов о JustMock. Его API больше похож на API Moq, чем на API RhinoMocks, поэтому, если вы знакомы с Moq, у вас не должно возникнуть проблем с изучением JustMock. В JustMock мы пытались улучшить историю, например, при имитации последовательных вызовов. Кроме того, как уже упоминалось, JustMock позволяет имитировать статические классы и методы / свойства , запечатанные классы, невиртуальные методы и свойства и т. д. с использованием того же синтаксиса, подобного Moq. Также благодаря этому в JustMock можно выполнять частичное имекание.
Кстати, «черная магия», о которой упоминал Дрор, также возможна при использовании JustMock, если вы напрямую ссылаетесь на сборку Telerik.CodeWeaver.Hook, но, к сожалению, в настоящий момент это не задокументировано. Если кто-то захочет это сделать. , он может открыть заявку в службу поддержки, и мы будем рады помочь.
Надеюсь, это поможет.