NUnit против тестовых проектов Visual Studio 2008 для модульного тестирования

Я собираюсь запустить новый проект на работе и хочу заняться модульным тестированием. Мы будем использовать Visual Studio 2008, C# и материалы ASP.NET MVC. Я собираюсь использовать либо NUnit, либо встроенные тестовые проекты, которые есть в Visual Studio 2008, но я открыт для исследования других предложений. Одна система лучше другой или, возможно, проще в использовании / понимании, чем другая?

Я надеюсь, что этот проект станет своего рода «лучшей практикой» для наших дальнейших усилий по развитию.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
255
0
56 830
18

Ответы 18

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

Кроме того, модульное тестирование Visual Studio позволяет выполнять покрытие и другие вещи, которые не может выполнить только NUnit.

Интересно, как я могу протестировать частную функцию с помощью VS? Я нашел единственный способ сделать его общедоступным. Есть другой способ?

Alexander Prokofyev 02.10.2008 17:03

Щелкните правой кнопкой мыши частную функцию и выберите «Создать частный аксессуар».

Robin Bennett 27.11.2008 20:47

Не трогайте интимные места. Помимо шуток, одна школа мысли состоит в том, что все, что вам нужно для теста, - это общедоступные методы. Вызов всех ваших общедоступных методов должен вызывать все ваши частные методы. Если частный метод не вызывается через общедоступный, частный метод является избыточным.

Lieven Keersmaekers 08.03.2009 13:30

@Lieven: если вы тестируете рядовых, хотя и публику, вы на самом деле проводите интеграционный тест, а не модульный тест. (Конечно, я не фанат TDD и, наверное, просто протестирую публику ... но мне хочется помочь начать драку)

Matthew Whited 09.07.2009 00:52

@Matthew, интеграционное тестирование - это тестирование двух или более модулей вместе. Тестирование частных методов - это просто (огромное) нарушение инкапсуляции и может привести к нестабильным модульным тестам, которые необходимо модифицировать каждый раз при изменении реализации.

Omer Rauchwerger 19.08.2009 14:15

+1 за упоминание покрытия кода в Visual Studio, что очень круто, вы можете дважды щелкнуть класс или метод, и редактор выделит код, который покрывается, и код, который не покрывается вашими модульными тестами. Позволяет легко приблизиться к 100% покрытию кода.

J c 12.10.2009 15:42

Вы также можете использовать [assembly: InternalsVisibleTo (...)] с директивой компилятора, чтобы удалить его, когда вы делаете сборку RTM.

Iain Galloway 26.11.2009 13:03

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

Crackerjack 21.05.2010 00:15

Как сейчас делают большинство фанатиков TDD, методы интерфейса заняли место публичных методов, а публичные методы заменили частные методы. Итак, у вас есть «общедоступные» методы, но вы не можете получить к ним доступ через интерфейс, поэтому на самом деле они частные, но все же тестируемые. Многие будут пытаться оправдать это так или иначе, но на самом деле они лгут себе - единственная причина, по которой они делают это таким образом, заключается в том, что вам нужен интерфейс для имитации, и вы не можете тестировать частные методы. (продолжение)

BlueRaja - Danny Pflughoeft 09.11.2010 01:46

(продолжение) Если бы технология позволяла им тестировать классы без создания интерфейса для все, большинство из них это сделали бы. И они будут тестировать свои частные методы, как и следует - вы хотите протестировать как можно меньшие единицы, чтобы уменьшить объем любых сбоев как можно меньше.

BlueRaja - Danny Pflughoeft 09.11.2010 01:47

ПРОБЛЕМА GUI: волшебный Resharper (найдите его) имеет средство запуска тестов для Visual Studio. ЧАСТНАЯ ПРОБЛЕМА: если вы хотите протестировать частный метод, скорее всего, он не должен быть частным - вероятно, извлеченным в отдельный класс и введенным вместо этого. Возможность протестировать частный метод - минус в моей книге.

Morten 05.04.2011 17:39

Даок назвал всех профи тестовых проектов Visual Studio 2008. Вот плюсы NUnit.

  • У NUnit есть фиктивный фреймворк.
  • NUnit можно запускать вне IDE. Это может быть полезно, если вы хотите для запуска тестов на сервере сборки стороннего разработчика, как CruiseControl.NET.
  • У NUnit выходит больше версий чем визуальная студия. У тебя нет ждать годы новой версии. И вам не нужно устанавливать новую версию IDE, чтобы получить новые возможности.
  • Разрабатываются расширения для NUnit, например, тесты строк и т. д.
  • Тесты Visual Studio занимают много времени пустить по какой-то причине. Это лучше в Visual Studio 2008, но это все еще слишком медленно на мой вкус. Быстрый запуск теста чтобы увидеть, не сломал ли ты что-нибудь может занять слишком много времени. NUnit с что-то вроде Testdriven.Net для запуска тестов из IDE на самом деле много Быстрее. Особенно при беге одиночные тесты. По словам Кьетила Клауссена, это вызвано тестером Visual Studio. Выполнение тестов MSTest в TestDriven.Net делает производительность MSTest сопоставимой с NUnit.

Также я считаю, что модульное тестирование VS недоступно в профессиональной версии Visual Studio (по крайней мере, в VS2005 этого не было). Группа MS Patterns and Practices предоставляет как MS, так и NUnit версии своих модульных тестов, поэтому они, очевидно, признают это проблемой для многих из нас, более бедных пользователей!

Joe 20.09.2008 18:35

Кажется, я помню, что в 2008 году все изменилось. Хотя я не уверен. Мой босс дал мне командную версию со всевозможными функциями, которые нельзя игнорировать :-)

Mendelt 20.09.2008 23:41

По моему опыту, низкая производительность вызвана средством тестирования в VS, а не самой средой тестирования. Вы также можете использовать TestDriven.Net на MSTest, и, насколько я могу судить, производительность сравнима с NUnit.

Kjetil Klaussen 05.02.2009 14:57

@Kjetil Klaussen: Это полезная информация, я обновлю свой ответ.

Mendelt 05.02.2009 15:28

Разве вы не можете просто использовать mstest.exe для запуска тестов MSTest вне среды IDE?

Phillip Wells 30.04.2009 00:26

Наличие у Nunit фреймворка для фиксации не является большим преимуществом. Я использовал проекты модульных тестов VS 2008 с фреймворком Moq, который использует новый подход, используя деревья выражений LINQ: code.google.com/p/moq

DSO 27.05.2009 23:49

Еще один плюс для Nunit, во всяком случае для меня, заключается в том, что Resharper имеет очень приятный пользовательский интерфейс, который намного быстрее, чем компоненты тестирования VS. Он даже связывает трассировку стека неудачных тестов с вашим кодом.

Jeff Putz 27.07.2009 04:00

@DSO - К вашему сведению, Rhino Mocks 3.5 также поддерживает деревья выражений.

Richard Szalay 27.07.2009 18:30

Модульное тестирование включено в профессиональную версию VS 2008.

user179700 06.10.2009 02:20

@Jeff Putz: Resharper также может запускать модульные тесты Visual Studio, даже вне тестового проекта.

Paul Ruane 03.08.2010 19:38

NUnit имеет настройку уровня Test и Fixture, а также тестирование на основе строк с TestCase ... Кроме того, у него есть выходной файл xml, который можно агрегировать в CC.net.

JDPeckham 28.03.2011 06:28

Фреймворк модульного тестирования на самом деле не имеет большого значения, потому что вы можете конвертировать тестовые классы с отдельными файлами проекта и условной компиляцией (например, Visual Studio → NUnit):

 #if !NUNIT
  using Microsoft.VisualStudio.TestTools.UnitTesting;
 #else
  using NUnit.Framework;
  using TestClass = NUnit.Framework.TestFixtureAttribute;
  using TestMethod = NUnit.Framework.TestAttribute;
  using TestInitialize = NUnit.Framework.SetUpAttribute;
  using TestCleanup = NUnit.Framework.TearDownAttribute;
  using TestContext = System.String;
  using DeploymentItem = NUnit.Framework.DescriptionAttribute;
 #endif

Плагин TestDriven.Net хорош и не очень дорог ... Имея только простую Visual Studio 2008, вам нужно найти тест из своего тестового класса или списка тестов. С помощью TestDriven.Net вы можете запускать свой тест прямо из класса, который вы тестируете. В конце концов, модульные тесты должны быть простыми в обслуживании и находиться рядом с разработчиком.

Я проголосовал против этого, потому что NUnit имеет более богатый синтаксис, чем MSTest, что означает, что вы можете перейти от MSTest -> NUnit, но не наоборот, если вы не ОЧЕНЬ осторожны. История показывает, что по крайней мере один из нас - нет.

Thomas Eyde 09.02.2009 14:43

Я согласен с Томасом. Это будет работать, если вы используете самые простые операторы assert, но модель ограничений NUnit является очень мощной и достаточной причиной для выбора NUnit вместо MSTest.

Mark 23.04.2009 17:57

Я считаю, что этот подход используется группой шаблонов и практики ms в тестах EntLib.

robi-y 17.05.2009 23:54

Также существуют значительные ограничения, идущие от MSTest -> NUnit. MSTest имеет конструкции (например, PrivateObject) для доступа к закрытым членам класса для тестирования; NUnit этого не делает.

Dan Is Fiddling By Firelight 07.01.2010 16:58

@Dan Neely, если вы тестируете рядовых, вы делаете это неправильно :(

JDPeckham 28.03.2011 06:30

@JDPeckham Когда у вас есть сотни LOC за одним общедоступным методом, выполняющим сложные вычисления (например, проприетарное сжатие с потерями), и никаких внешне значимых промежуточных продуктов, создаваемых частными функциями, получающими хорошее покрытие кода, в то время как только тестирование черного ящика нецелесообразно. Не существует каких-либо основных автоматизированных фреймворков тестирования, не разработанных вокруг концепции модульного тестирования, что оставляет либо использование одного для тестирования частных методов (оскорбление сторонников модульного тестирования, либо предоставление частных методов только для тестирования (и рискуют взломать код потребителей, потому что они пытались использовать методы, которые они не должны)

Dan Is Fiddling By Firelight 28.03.2011 08:21

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

Dan Is Fiddling By Firelight 28.03.2011 08:24

Теги @ThomasEyde NUnit (Lite) не поддерживаются Visual Studio. В этом случае тесты NUnit (Lite) и MSUnit отображаются в окне Test View.

hellboy 11.03.2014 14:43

Прокрутите вниз, чтобы увидеть другой путь (NUnit-> VS) ...

Tuomas Hietanen 26.08.2014 16:46

@DanNeely - пуристы не заставили бы электрика проверить проводку в их доме. В конце концов, это личное, а не для потребителей. Просто включите сеть, и если что-то пойдет не так, это не удастся. Сказав, что получение кода в тестируемом состоянии - это хорошо. Единственное, что вы можете сделать, - это создать внутренние классы и предоставить к ним доступ только к вашей тестовой .dll для более глубокого тестирования. Затем вы можете протестировать только общедоступные свойства этих внутренних классов.

Martin Capodici 20.01.2016 04:35

xUnit - еще одна возможность для нового проекта. Возможно, у него более интуитивно понятный синтаксис, но он не совсем совместим с другими фреймворками.

Сначала я хочу исправить неправильный оператор: вы можете запустить MSTest вне Visual Studio с помощью командной строки. Хотя некоторые инструменты CI, такие как TeamCity, лучше поддерживают NUnit (вероятно, изменится, когда MSTest станет более популярным).

В моем текущем проекте мы используем и то, и другое, и с единственной большой разницей мы обнаружили, что MSTest всегда работает как 32-битный, а NUnit - как 32-битный или 64-битный тесты, что имеет значение только в том случае, если ваш код использует собственный код, который зависит от 32/64 бит.

Насколько мне известно, в настоящее время для модульного тестирования с .NET доступны четыре фреймворка:

NUnit всегда был впереди, но за последний год или около того разрыв сократился. Я по-прежнему предпочитаю NUnit, тем более что они недавно добавили свободный интерфейс, который делает тесты очень удобочитаемыми.

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

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

Кроме того, если у вас нет такого плагина, как TestDriven.NET, вы не можете отлаживать свои модульные тесты NUnit (или MbUnit, xUnit и т. д.) В среде Visual Studio, как это можно сделать с помощью встроенной среды тестирования Microsoft Visual Studio.

Вы можете отлаживать тестирование NUnit в Visual Studio 2005.

Jason Short 24.09.2008 21:21

Вы также можете отлаживать xunit, но не очевидно, как это настроить (страница свойств)

annakata 19.01.2009 13:40

Вы можете легко отлаживать NUnit, подключив отладчик к запущенному процессу NUnit, как сказал Гримус. Здесь нет реального недостатка.

Anne Schuessler 19.11.2010 11:58

1: Количество тестов, настраиваемых в настройках VS - я установил его равным единице. 2: Согласитесь с приведенными выше комментариями - возможно, но неудобно, 3: В целом, я предпочитаю встроенную среду тестирования VS.

RaoulRubin 05.07.2013 22:05

Преимущества / изменения встроенной среды модульного тестирования Visual Studio 2008:

  1. Версия 2008 года теперь доступна в профессиональные издания (до этого требовались дорогие версии Visual Studio и это только для модуля разработчика тестирование), что оставило много разработчикам с единственным выбором Фреймворки открытого / внешнего тестирования.
  2. Встроенный API, поддерживаемый одной компанией.
  3. Используйте те же инструменты для запуска и создания тестов (вы можете запускать их с помощью командной строки также MSTest).
  4. Простой дизайн (предоставляется без фиктивного фреймворка, но это отличная отправная точка для многих программистов).
  5. Предоставляется долгосрочная поддержка (я до сих пор помню, что случилось с NDoc, и я не хочу брать на себя обязательства по тестовой среде, которая может не поддерживаться через пять лет, но я все же считаю NUnit отличным фреймворком).
  6. Если в качестве серверной части используется Team Foundation Server, вы можете простым способом создавать рабочие элементы или ошибки с данными неудачного тестирования.

Я действительно думаю, что это все еще говорит о взгляде Microsoft на тестирование, что оно НЕ в стандартной версии, а только в версии Professional и выше.

J Wynia 02.03.2009 18:27

Согласитесь, хотелось бы увидеть его в стандарте и выше. В экспресс-версиях для новичка будет перебор.

Simara 06.03.2009 01:48

@J Wynia: Чтение их решения включить его только в Professional и выше как высказывание чего-то об их взгляде на тестирование - это слишком много для него. Это скорее бизнес-решение, чем философское.

jason 09.11.2010 05:39

@Simara Тестирование должно быть неотъемлемой частью жизненного цикла разработки. Он должен быть предоставлен в экспресс-изданиях.

eastender 17.09.2013 10:00

Немного не по теме, но если вы выберете NUnit, я могу порекомендовать использовать ReSharper - он добавляет несколько кнопок в пользовательский интерфейс Visual Studio, которые значительно упрощают запуск и отладку тестов из среды IDE.

Этот обзор немного устарел, но объясняет это более подробно:

Использование ReSharper как неотъемлемой части вашего набора инструментов TDD

С плагином Gallio для R # вы также можете запускать MSTest.

Kjetil Klaussen 05.02.2009 15:00

CodeRush помещает значки в тесты прямо в коде, поэтому вы можете запустить один тест или все тесты в классе или в пространстве имен. Смотрите здесь: community.devexpress.com/blogs/markmiller/archive/2009/11/16‌ /…

Ryan Lundy 26.03.2010 23:51

Resharper также будет запускать тесты MSTest.

JDPeckham 28.03.2011 06:31

MSTest - это, по сути, немного переработанный NUnit с несколькими новыми функциями (такими как настройка и разборка сборки, а не только фиксация и тестовый уровень), и в нем отсутствуют некоторые из лучших элементов (например, новый синтаксис ограничений 2.4). NUnit более зрелый, и его больше поддерживают другие поставщики; и, конечно же, поскольку он всегда был бесплатным (тогда как MSTest вошел только в Профессиональную версию Visual Studio 2008, а до этого он был более дорогим SKU), и большинство проектов ALT.NET используют его.

Сказав это, есть некоторые компании, которые невероятно неохотно используют что-то, на чем нет ярлыка Microsoft, и особенно код OSS. Таким образом, наличие официальной среды тестирования Microsoft может быть мотивацией, необходимой этим компаниям для прохождения тестирования; и давайте будем честными, важно именно тестирование, а не то, какой инструмент вы используете (а с помощью Код Туомаса Хиетанена вы почти можете сделать свою тестовую среду взаимозаменяемой).

Мне нравится синтаксис ограничений NUnit, но я думаю, вы должны прочитать это относительно атрибутов SetUp и TearDown: jamesnewkirk.typepad.com/posts/2007/09/why-you-should-.html

Nobody 02.12.2010 19:34

Что такое "Артикул"? Полагаю, это не Коммунистический союз молодежи Швеции (Sveriges Kommunistiska Ungdomsförbund).

Peter Mortensen 23.08.2020 22:39

@PeterMortensen - это подразделение по хранению запасов, по-видимому, для отслеживания запасов - в данном случае инвентарь программных продуктов. Таким образом, каждая версия Visual Studio имеет свой собственный SKU - один для Professional, один для Enterprise.

David Keaveny 21.09.2020 03:24

Но, может быть, молодые шведские коммунисты любят продукты Microsoft больше, чем большинство людей?

David Keaveny 21.09.2020 03:25

Я получил сообщения, что "файловая структура NUnit богаче, чем VSTest" ... Конечно, если вы предпочитаете файловую структуру NUnit, вы можете использовать это решение другим способом, например (NUnit → Visual Studio):

 #if !MSTEST
     using NUnit.Framework;
 #else
     using Microsoft.VisualStudio.TestTools.UnitTesting;
     using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
     using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
     using SetUp = Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute;
     using TearDown = Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute;
 #endif

Или любое другое преобразование ... :-) Это использование здесь просто псевдоним компилятора.

Я не понимаю, о чем вы здесь говорите.

PositiveGuy 11.02.2010 22:30

нет настройки / разборки уровня приспособлений :( или они предполагают, что мы используем ctor и dtor?

JDPeckham 28.03.2011 06:33

Моя основная проблема с модульными тестами Visual Studio над NUnit - это создание тестов Visual Studio, как правило, вводит кучу сгенерированного кода для доступа к частным членам.

Кто-то может захотеть протестировать свои частные методы, а кто-то нет. Это другая тема.

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

Я бы предпочел использовать небольшую тестовую среду MS, но пока придерживаюсь NUnit. Проблемы с MS обычно (для меня)

  • Общий файл "тестов" (бессмысленно), который должен быть поддерживается
  • Списки тестов вызывают конфликты с несколькими разработчиками / системами контроля версий.
  • Плохой интегрированный интерфейс - запутанная настройка, обременительный выбор тестов
  • Нет хорошего внешнего бегуна

Предостережения

  • Если бы я тестировал сайт aspx, я бы определенно использовал MS
  • Если бы я развивался соло, тоже был бы MS
  • Если бы у меня были ограниченные навыки и я не мог настроить NUnit :)

Мне намного проще просто написать свои тесты и запустить NUnitGUI или один из других интерфейсов (testDriven намного дороже). Настроить отладку с версией командной строки также довольно просто.

Прямо сейчас я использую Resharper для запуска тестов MS, поэтому я не возражаю против них. Я предпочитаю CodeRush + RefactorPro, хотя мы здесь не используем его. Может быть, у них теперь есть достойный бегун для MS Test.

Andrew Backer 16.04.2012 11:39

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

Мне не нравилась идея писать один и тот же тест несколько раз. Особенно в большом проекте, где методы тестирования могут легко превратиться в сотни тестов.

NUnit делает именно то, что мне нужно. Единственное, что отсутствует в NUnit, - это надстройка Visual Studio, которая может отображать красный / зеленый статус (например, VSTS) каждого теста.

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

В MSTest слишком много атрибутов повсюду - код, который выполняет настоящие тесты, представляет собой крошечные строчки, которые вы можете прочитать здесь и там. Большой беспорядок. В NUnit код, выполняющий тест, просто доминирует над атрибутами, как и должно быть.

Кроме того, в NUnit вам просто нужно щелкнуть тесты, которые вы хотите запустить (только один? Все тесты, охватывающие класс? Сборка? Решение?). Один клик. И окно ясное и большое. Вы получите четкие зеленый и красный свет. Вы действительно знаете, что происходит с одного взгляда.

В VSTS список тестов забит внизу экрана, он маленький и некрасивый. Вам нужно дважды посмотреть, чтобы узнать, что произошло. И нельзя запустить только один тест (ну я еще не узнал!).

Но я, конечно, могу ошибаться - я только что прочитал около 21 сообщения в блоге на тему «Как сделать простой TDD с помощью VSTS». Я должен был прочитать больше; ты прав.

Для NUnit я прочитал один. И в тот же день я был в TDD. С удовольствием.

Кстати, я обычно люблю продукты Microsoft. Visual Studio - действительно лучший инструмент, который может купить разработчик, но управление TDD и рабочими элементами в Visual Studio Team System - отстой.

Если вы рассматриваете MSTest или NUnit, я рекомендую вам взглянуть на MbUnit. Мои причины

  1. Совместимость с TestDriven.Net. Ничто не сравнится с привязкой TestDriven.Net.ReRunWithDebugger к комбинации клавиатуры.
  2. Фреймворк Галлио. Галлио - средство запуска тестов, как и NUnit. Единственная разница в том, что вам все равно, написали ли вы свои тесты в NUnit, MSTest, xUnit или MbUnit. Все они разбегаются.
  3. Совместимость с NUnit. Все функции NUnit поддерживаются MbUnit. Я думаю, вам даже не нужно менять свои атрибуты (нужно будет это проверить), только вашу ссылку и using.
  4. Сборник утверждает. В MbUnit больше случаев Assert, включая класс CollectionAssert. По сути, вам больше не нужно писать собственные тесты, чтобы увидеть, совпадают ли две коллекции.
  5. Комбинаторные тесты. Было бы здорово, если бы вы могли предоставить два набора данных и пройти тест для всех комбинаций данных? Он находится в MbUnit.

Изначально я выбрал MbUnit из-за его функциональности [RowTest ....] и не нашел ни одной причины для возврата. Я переместил все свои активные наборы тестов из NUnit и никогда не оглядывался назад. С тех пор я обратил на преимущества две разные команды разработчиков.

Мне не нравится встроенная среда тестирования Visual Studio, потому что она заставляет вас создавать отдельный проект, а не проводить тесты как часть проекта, который вы тестируете.

На самом деле вы можете обмануть Visual Studio, вручную отредактировав файлы проекта и добавив в значения ProjectTypeGuids, которые используются для идентификации тестовых проектов: & lt; ProjectTypeGuids & gt; {3AC096D0-A1C2-E12C-1390-A8335801FDA‌ B}; {FAE04EC0-301F- 11‌ D3-BF4B-00C04F79EFBC‌} & lt; / ProjectTypeGui‌ ds & gt;

Paul Ruane 03.08.2010 20:09

С выпуском Система кодовых контрактов в .NET 4.0 и доступностью статическая проверка теоретически потребуется писать меньше тестовых примеров, и такой инструмент, как Pex, поможет идентифицировать эти случаи. В связи с обсуждаемым вопросом, если вам нужно меньше делать с модульными тестами, потому что ваши контракты закрывают ваш хвост, то почему бы просто не пойти дальше и не использовать встроенные части, поскольку это одна зависимость, которую нужно контролировать. В наши дни я люблю простоту. :-)

Смотрите также:

Другие вопросы по теме