Я возвращаюсь к немного большему количеству .NET после нескольких лет неиспользования его на постоянной основе, и мне интересно, какие хорошие пакеты модульного тестирования сейчас.
Я знаком с NUnit (несколько лет назад) и немного поиграл с IronRuby с целью получить что-то вроде RSpec, но я не знаю многого, кроме этого.
Я понимаю, что могу найти это в Google и положить этому конец, но я верю, что, вероятно, получу лучший и более информированный ответ, задав вопрос здесь :-)
Предложения?
Мне нравится MbUnit, эээ, Галлио. Для меня важнее всего наличие хорошей поддержки инструментов в Visual Studio. Для этого я использую Решарпер, у которого есть Исполнитель тестов MbUnit. Многим людям нравится TestDriven.NET как средство запуска тестов.
Мне нравится TestDriven.NET (хотя я использую ReSharper), и я очень доволен XUnit.net. Он использует факты вместо тестов, которые многим не нравятся, но мне нравится разница в терминологии. При внесении изменений полезно подумать о коллекции автоматически доказываемых фактов о вашем программном обеспечении и посмотреть, какие из них вы нарушаете.
Имейте в виду, что Visual Studio 2008 Professional (и выше) теперь поставляется со встроенным модульным тестированием. (раньше он был доступен только с выпусками Team System) и может подойти для ваших нужд.
Их так много, что это безумие. Я думаю, безумно хорошо.
Я уверен, что с ними все в порядке. Однако я бы отказался от MSTest, если только вам не нравится удобство наличия всего в одной среде IDE из коробки.
У Скотт Хансельман есть подкаст по этой теме.
Если вы спросите меня, разница между MSTest и NUnit не так уж велика. В основном это сводится к предпочтительному синтаксису, и если вы используете TesteDriven.Net, который также поддерживает MSTest, производительность практически такая же.
Да, NUnit 2.5 имеет функции RowTest через атрибут [TestCase].
Похоже, что xUnit.net предлагает несколько иной подход к NUnit, MbUnit и MSTest, что интересно.
В моем поиске решения, подобного RSpec (потому что я люблю RSpec), я также наткнулся на NSpec, который выглядит немного многословным, но в сочетании с надстройкой Расширения NSpec для использования методов расширения C# 3 выглядит довольно красиво.
Вы можете посмотреть этот NSpec (nspec.org). Он почти идентичен RSpec.
Здесь мы используем NUnit и MbUnit. Мы используем TestDriven.NET для запуска модульных тестов из Visual Studio. Мы используем отличный, очень рекомендуемый RhinoMocks в качестве фиктивного фреймворка.
Ссылка на RhinoMocks (фактически) не работает. Он перенаправляет на общую страницу.
Раньше я использовал NUnit, но я переключился на MbUnit, поскольку он имеет больше функций.
Я люблю RowTest. Это позволяет параметризовать ваши тесты. Тем не менее, у NUnit есть немного лучшая поддержка инструментов. Я использую ReSharper для запуска тестов MbUnit. У меня были проблемы с TestDriven.NET при запуске моих методов SetUp для MbUnit.
NUnit, MSTest и т. д. Делают примерно одно и то же. Однако я считаю, что NMock незаменим.
NMock или какой-либо имитирующий пакет не является модульным тестированием, но он значительно упрощает выполнение модульного тестирования, чем это могло бы быть.
Придерживайтесь NUnit. Не подходите близко к MSTest.
Работать с NUnit + ReSharper - одно удовольствие.
Почему вам следует держаться подальше от MSTest? Я был бы признателен, если бы вы действительно потрудились рассказать, ПОЧЕМУ вы хотите держаться подальше от этого. И R # также работает с MSTest (с плагином Gallio).
Привет, Кьетил. В основном по трем причинам. 1. Метаданные, создаваемые тестами MS. Почему? Размышляйте как NUnit. 2. Тест-раннер ужасен. 3. NUnit все делает лучше - зачем менять. Некоторое время я делал это, но потом снова вернулся.
Я также столкнулся с различными ошибками с тестовым «бегуном» MS. В основном VS оставляет его работать в фоновом режиме, и при определенных обстоятельствах тесты, которые вы запускали 10 минут назад, могут мешать тому, который вы собираетесь запустить прямо сейчас :-(
Примечание. Начиная с VS2017 / dotnetcore, Microsoft переписала все материалы MSTest. Теперь есть MSTestV2, а бегун / модель очень похожи на то, что вы ожидаете от NUnit и других подобных вещей, поэтому я думаю, что MSTest - гораздо более жизнеспособный вариант в наши дни.
Интересно, посмотрю. Моему ответу уже более десяти лет, поэтому он, вероятно, менее точен, чем был раньше. :-)
Раньше я использовал NUnit, но теперь, как правило, использую MbUnit для двух основных функций: 1. Функция RowTest позволяет вам легко запускать один и тот же тест с разными наборами параметров, что важно, если вы действительно хотите получить полное покрытие. 2. Функция отката позволяет вам запускать тесты для вашей базы данных, откатывая изменения после каждого теста, сохраняя вашу базу данных в одном и том же состоянии каждый раз. И это так же просто, как добавить атрибут [Откат].
Еще одним приятным аспектом MbUnit является то, что его синтаксис почти идентичен NUnit, поэтому, если у вас уже есть весь тестовый стенд под NUnit, вы можете просто отключить ссылки без необходимости изменять какой-либо (очень?) Код.
Я использую следующее:
TestDriven.NET - Дополнение для модульного тестирования для Visual Studio
Изолятор Typemock - Mocking framework для модульного тестирования .NET.
NUnit - фреймворк для модульного тестирования с открытым исходным кодом на C#.
+1, обратите внимание, что NUnit 2.5 имеет приятные функции RowTest, а также комбинаторное тестирование аргументов и т. д.