Какие предпочтительные варианты сегодня для модульного тестирования в Visual Studio 2010? - PullRequest
6 голосов
/ 14 июня 2011

Я новичок в TDD и ищу варианты для модульного тестирования моего решения Visual Studio 2010. Это решение представляет собой веб-приложение MVC3, в котором я пытаюсь использовать DDD с шаблонами IoC, репозитория и единицы работы. Он также использует EF4 и шаблоны POCO EF4. (Я пытался смоделировать большую часть этого из Microsoft N-layer App , также заимствуя шаблоны проектирования из пары других блогов).

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

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

Например:

  1. Есть ли разница между MSTest , Visual Studio Framework Unit Testing Framework и Microsoft.VisualStudio.TestTools.UnitTesting? Если да, то? Кажется, они разные, но в некоторых обсуждениях, которые я видел, на них неправильно ссылались.

  2. Поскольку автор NUnit также является автором xUnit, означает ли это, что xUnit заменяет NUnit, что делает NUnit устаревшим? Кажется, что некоторые даже сегодня предпочитают NUnit. Но если NUnit устарела, зачем сегодня начинать использовать NUnit вместо xUnit? Если NUnit не устарела, значит ли это, что xUnit не взлетает так, как было изначально задумано? Почему автор продолжает поддерживать два, казалось бы, избыточных инструмента?

  3. Что из этого интегрируется в VS2010, не прибегая к отдельному выполнению командных строк для тестирования или приобретая инструменты, такие как TestDriven.Net? (У меня есть ReSharper, хотя, если это поддерживает какой-либо из них.)

  4. Произошли ли в последнее время какие-либо заметные изменения в какой-либо из них, которые могли бы сделать более ранние обсуждения недействительными?

  5. Есть ли какие-либо другие, которые я должен рассмотреть в дополнение к тем, которые я упомянул выше?

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

На первый взгляд, "Visual Studio Unit Testing Framework", кажется, хорошо интегрируется в VS2010 (Pro) из коробки, и, кажется, его легко запустить и запустить быстро, в отличие от некоторых других, даже если это немного раздутый. Но так как я новичок, я не хочу вдаваться в подробности через 3 месяца, а потом понимаю, что загнал себя в угол только потому, что мне казалось, что его легче поднять.

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

Заранее спасибо.

РЕДАКТИРОВАТЬ: Это должно быть больше обновленной дискуссии почти 10-летней популярной дискуссии , на которую я ссылался выше. В этом обсуждении есть несколько положительных моментов, но за три года многое могло измениться, и мне нравится более актуальная оценка предмета.

Ответы [ 4 ]

7 голосов
/ 14 июня 2011
  1. Все то же самое .. просто конфузополия (MSTest - это бегун, а framework - это DLL). Теперь я буду называть его MSTest.
  2. Не много пробега с xUnit. Я твердо лежу в лагере NUnit. Не уверен в истории ... но AFAIR Джим Ньюкирк даже был нанят Microsoft для разработки MSTest. Я могу определенно ответить, что NUnit не устарела (или даже не замедляется). Я только что исправил ошибку в течение нескольких дней после сообщения об этом. Чарли Пул возглавляет его некоторое время (и делает звездную работу). NUnit является самым старым (и основан на семействе тестовых бегунов xUnit, которые начинались с SUKIT и JUnit Бека). Я вырос с этим (так сказать). Он просто остается в стороне и имеет почти все функции, необходимые для повседневной разработки. MSTest предлагает интеграцию VisualStudio, но мутит воду небольшими незначительными отклонениями, которые меня расстраивают (распараллеливание, настройка прибора должна быть статической и т. Д.) Другие пытаются расширить тестовый стенд различными способами (изменение терминологии, например, теории над тестовыми приспособлениями) и способами, которыми вы пишете свои тесты. Мне никогда не приходилось продлевать мой тест-бегун; может быть, я не работал в тех средах, где это нужно.
  3. NUnit не интегрируется с полки, как MSTest. Но если у вас есть Resharper (который вы должны), он закрывает этот пробел. Также MSTest AFAIK требует копию всей IDE (определенной редакции) в отличие от NUnit, которую можно просто скопировать в папку и запустить. В некотором роде приводит вас в TFS с «бесплатным покрытием кода, если вы используете MSTest». Если ваша организация использует TFS для CI, вы обнаружите, что интеграция чего-либо, кроме MSTest, будет «более нестандартным кодом, который мне нужно написать».

4 и 5 вещи постоянно меняются, так что трудно сформировать окончательный ответ.

Резюме: NUnit проще в изучении (займет у вас день или меньше) и большая часть литературы w.r.t. TDD упадет легче, если вы это знаете. У меня лично никогда не было причин для переезда (например, NUnit не делает этого, как xUnit, и я не могу жить без этого). Если вы не разбираетесь в MS-CI (и «бесплатном» Coverage и TestImpact), я бы сказал, начните с NUnit и продолжайте свой путь вверх. Нет серебряного бегуна.
Инструмент не гарантирует успеха, это то, как вы используете эти инструменты. Выберите один, начните и адаптируйтесь.

НТН

1 голос
/ 14 июня 2011

ReSharper может запускать тесты, написанные на xUnit, NUnit и MSTest.

xUnit требуется (бесплатный) плагин для ReSharper, связанный со страницей xUnitContrib: http://xunitcontrib.codeplex.com/

NUnit и MSTest работают из коробки.

В ReSharper вы можете увидеть, какие рамки модульного тестирования установлены в ReSharper -> Параметры -> Модульное тестирование (внизу под инструментами на левой панели)

1 голос
/ 14 июня 2011

Это не изменяющее жизнь решение.Я использую MSTest в одних проектах, NUnit в других.Я никогда не пробовал xUnit, но я уверен, что он тоже подойдет.

Для себя я предпочитаю MSTest просто b / c из встроенных шаблонов и сочетаний клавиш, которые позволяют быстро запускать и настраивать тестирование.Тем не менее, если кто-то в команде разработчиков не может использовать VS, это не радость.

При использовании NUnit я не хотел платить за Resharper (извините, я видел это в действии, но простоЯ не видел свет на нем, я думаю).Вместо этого я использую Visual NUnit.http://visualstudiogallery.msdn.microsoft.com/c8164c71-0836-4471-80ce-633383031099 Это бесплатно, интегрируется с пользовательским интерфейсом Visual Studio (хотя это не красивый пользовательский интерфейс, но он лучше по сравнению с TestDriven.NET).

0 голосов
/ 14 июня 2011

Я могу ответить # 3: TestDriven прекрасно интегрируется с VS2010. У вас есть опция контекстного меню для запуска тестов, и вы можете даже привязать некоторые команды к сочетаниям клавиш, чтобы вы могли быстро запустить все свои тесты.

...