Я только начинаю работать над Test Driven Development, и мне интересно, какие основные различия между RhinoMock, TypeMock и NUnit встроены в насмешку?
Любая информация будет принята с благодарностью!
Я только начинаю работать над Test Driven Development, и мне интересно, какие основные различия между RhinoMock, TypeMock и NUnit встроены в насмешку?
Любая информация будет принята с благодарностью!
TypeMock - это коммерческий продукт (это означает, что вам придется заплатить за него), но позволит вам издеваться над конкретными объектами - в отличие от RhinoMocks/NUnit/MoQ, которые могут только издеваться над интерфейсом/абстрактным классом. Как это достигается, это пограничная черная магия, но она делает некоторые очень умные вещи с CLR.
Это может быть особенно полезно, если вы используете библиотеки в своем проекте, которые не используют многие интерфейсы. Таким образом, вы могли бы, например, использовать TypeMock для издевания объектов LINQtoSQL datacontext или Sharepoint. Однако, если вы используете TypeMock, это нет оправдания плохого дизайна в вашем приложении.
Насколько я знаю, помимо незначительных различий в синтаксисе, большинство из насмешливых фреймворков отошли от старой модели записи/воспроизведения. Как правило, вы настраиваете свои макеты, называя ожидания с использованием Fluent Interface.
Лично я использовал только MoQ и я < 3 it.
Видео, называемое TDD - Понимание Mock Objects Роя Ошерове очень полезно в изучении различий разных насмешливых библиотек. Он не очень подробно разбирается в каждом аспекте, но достаточно, чтобы вы поняли. Надеюсь, это поможет. Рой также является главным архитектором TypeMock и является очень влиятельной фигурой на арене тестирования. Я не могу рекомендовать это видео достаточно для тех, кто хочет научиться использовать насмешку, а также узнать о доступных библиотеках.
Основное различие между TypeMock и библиотекой с открытым исходным кодом заключается в том, что TypeMock использует API-интерфейс Profiler, предоставляемый Microsoft, вместо динамического прокси-сервера . Это позволяет TypeMock издеваться над конкретными классами и статическими методами. Если вы не знаете, что такое профайлер, это тот же API, который используется такими инструментами, как JetBrain dotTrace и RedGate Ants.Net Profiler. TypeMock просто использует API по-другому, чтобы подделывать (макет), что вы ему рассказываете.
@RichardOD, спасибо за напоминание, его книга "" Искусство модульного тестирования "" более подробно описывает, где нет видео. У меня есть книга, и она очень информативна.
У меня не было личного опыта с этими другими, но...
Я все время использую TypeMock и считаю его очень мощным инструментом, который может улучшить охват моих модульных тестов. Это связано с тем, что я работаю с SharePoint, и только TypeMock позволяет мне издеваться над классами SharePoint, поскольку они являются конкретными классами, а не интерфейсами.
Смазывание классов SharePoint невозможно с RhinoMock, Moq, NUNit и т.д., поскольку (я считаю) им требуются интерфейсы для издевательства объектов, а не возможность издеваться над конкретными конкретными классами.
Если ваш код действительно использует много интерфейсов, и вам не требуется издеваться над конкретными классами, тогда TypeMock немного дорогой, но для получения мощности он стоит того.