NMock2, носорог издеваться. Какой выбрать? - PullRequest
1 голос
/ 08 апреля 2009

Я использую среду модульного тестирования Visual Studio, и мне нужно использовать среду для моделирования. И я не уверен, какой из насмешливых фреймворков NMock2, Rhino mock, что мне стоит выбрать. Не могли бы вы поделиться своим опытом? Спасибо!

Ответы [ 2 ]

3 голосов
/ 08 апреля 2009

Я бы настоятельно рекомендовал Moq, если вы работаете с C # 3.5. В документации Rhino нет четкого различия между количеством «синтаксисов», которые вы можете использовать, что легко приводит к путанице в написании ваших тестов, что может привести ко всем видам ошибок.

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

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

2 голосов
/ 08 апреля 2009

Я был очень доволен RhinoMocks, используя шаблон AAA (Arrange-Act-Assert). Я смог быстро освоиться с ним и смог сделать почти все, что мне нужно, не прибегая к ручным шуткам. Некоторые из других шаблонов использования, доступных в RhinoMocks, мне менее понятны, поэтому я бы рекомендовал использовать AAA.

   // Arrange

   var mock = MockRepository.GenerateMock<IMyInterface>();

   mock.Expect( m => m.Method() ).Return( value ).Repeat.AtLeastOnce();

   //  Act

   var testClass = new TestClass( mock ); // injection of mocked object

   var expected = ...expected result from method...
   var actual = testClass.TestMethod();

   // Assert

   Assert.AreEqual( expected, actual );

   mock.VerifyAllExpectations();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...