2010-11-12 3 views
3

Я думал об изучении окурков и издевок, и я знаю несколько доступных библиотек для .Net: RhinoMocks, Moq, TypeMock ... и хотя у меня все еще нет слишком проясните разницу между заглушками и издевательствами, я знаю, что он есть, и я всегда мог об этом рассказать.Вдаваясь в укутывание и насмешливость

Я хотел бы знать, не будучи в TDD или что-либо подобное:

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

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

  • Какой библиотеки вы бы по-вашему рекомендуем? Мок кажется более легким.

  • Каковы наилучшие ресурсы (учебные пособия, книги, видео ...) для чайников и более или менее актуальных? Я не хотел бы узнать о библиотеке, и когда я загружу последнюю версию, поймите, что большая часть показанного API больше не действительна.

Спасибо за все.

+1

В качестве ответов варианты, этот вопрос должен быть Community Wiki (IMHO) –

+1

Используя правильные инструменты, кривая обучения может быть очень простой. Например, в java, использующем mockito, так просто, для изучения требуется около 10 минут. Я уверен, что вы найдете подобную библиотеку для .Net (или нескольких). Кстати, эти вопросы кажутся дураками - я уверен, что это было задано раньше. Попробуйте немного поискать SO. – ripper234

+0

У меня недостаточно привилегий для запуска wiki-сообщений. О поиске SO, ну, я немного искал и видел пару других сообщений, но они были либо старыми, либо не покрывали мои вопросы на том уровне, который я хотел, поэтому подумал, что неплохо было бы начать новый вопрос , – Neverbirth

ответ

2

Я использую FakeItEasy в течение нескольких месяцев, и это Faking Amazing!
Я не могу рекомендовать его достаточно высоко.

+0

Отмечено, я не знал об этом, хотя прошло около месяца с момента последнего фиксации источника, он все еще активен? Полагаю так. – Neverbirth

+0

Он по-прежнему активен, но я не настаивал на некоторое время. На данный момент запросов на функцию нет, поэтому у меня есть только локальные коммиты. –

5
  • Оценка обучения стоит того? Да, это не так сложно. Как только вы знаете, как использовать насмешливую структуру, вы сэкономите нагрузку времени в модульном тестировании.

  • Лучше, чем руководство пользователя? - Не обязательно, в некоторых ситуациях ручное издевательство может быть лучше. Но ИМО, насмешливые рамки, как правило, самый быстрый способ добиться успеха, с наименьшим кодом. Попробуйте оба подхода, и вы узнаете, что лучше всего в данной ситуации.

  • Какая библиотека? - Moq и Rhino Mocks - самые популярные для .Net according to this poll, и оба имеют множество функций и просты в использовании. С Rhino есть два способа насмешки («запись & воспроизведения» и «режим AAA»). Я использовал бы только режим AAA. I думаю Moq работает только как режим Rhino 'AAA', так что может быть немного менее запутанным.

  • Не уверен в конкретных ресурсах, просто выберите инструмент и Google, вы найдете много.

С точки зрения разницы между Mocks & окурков, макет может записывать то, что случилось с ним (например, какие методы были вызваны на него), в то время как заглушка не может. Вы узнаете больше, когда начнете их использовать.

+0

Я ожидал, что NMock и JustMock получат еще несколько голосов. Я видел запись и воспроизведение вызова Rhino в некоторых образцах и немного смутился о том, насколько сложна она добавляет, так или иначе, я вообще не знаю, как они работают/что они на самом деле делают, поэтому я не могу комментировать это вообще. – Neverbirth

+0

Да, воспроизведение - это старый способ сделать это (и не позволяет вам следовать шаблону «Упорядочить закон» в своих модульных тестах - aka AAA), лично я думаю, что вы можете забыть об этом. Вот почему я считаю, что Moq может быть лучшим выбором, поскольку у него нет наследия этих вызовов API, таких как Rhino, поэтому его немного легче изучить. –

0

Я фактически использую RhinoMocks, и хотя кривая обучения довольно болезненна, теперь я очень доволен результатами. В любом случае, это займет (или, по крайней мере, это потребовало меня, но, может быть, я немного немой :)) некоторое время, прежде чем вы получите быстрее, чем вручную, делая фиктивные реализации. Я никогда не использовал ни одну из других библиотек, которые вы упомянули, поэтому я не могу провести сравнение между ними.

На домашней странице также есть хорошая документация.

В целом, я думаю, что это было стоящее усилие, и я бы порекомендовал его.

+1

Одно препятствие, которое я видел с Rhino Mocks, заключается в том, что его официальная документация не очень приятная, не так ли? Rhino Mocks была моей первой ставкой, когда решила узнать больше об этом. – Neverbirth

+0

Да, вы совершенно правы: это самый большой * барьер. В любом случае, вы можете найти много информации, разбросанной по интернету, то есть прямо здесь, в stackoverflow, вы можете найти много информации. – Simone

+0

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

0

Stub - поддельный объект, который имитирует поведение «реального» объекта и несет ответственность за то, чтобы проверка выполнялась.

Mock - заглушка, которая используется для подтверждения, если тест проходит.


Об издевательских фреймворках - этот вопрос has been asked before.

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

Moq в последнее время, кажется, самый трюковый фальшивый каркас на .Net пространстве. Я тоже использую его.

Смежные вопросы