Пакеты модульного тестирования .NET
Я возвращаюсь к немного большему количеству .NET после того, как несколько лет не использовал его постоянно, и мне интересно, какие сейчас хорошие пакеты для модульного тестирования.
Я знаком с NUnit (несколько лет назад) и немного поиграл с IronRuby с целью получить что-то вроде RSpec , но я не знаю многого, кроме этого.
Я понимаю, что могу найти это в Google и положить этому конец, но я верю, что, вероятно, получу лучший и более информированный ответ, задав вопрос здесь :-)
Предложения?
Ответов (11)11
Их так много, что это безумие. Я думаю, безумно хорошо.
- Для консервативных типов (я) NUnit все еще доступен и более чем способен.
- Для типов Microsoft MSTest подходит, но он медленный и неуклюжий по сравнению с NUnit. Ему также не хватает покрытия кода, и при этом не нужно платить большие деньги за дорогие версии Visual Studio.
- Также есть MbUnit . Это похоже на NUnit, но у него есть изящные функции, такие как RowTest (запускать один и тот же тест с разными параметрами) и Rollback (вернуть базу данных, как вы ее нашли после теста).
- И, наконец, xUnit.net - модный вариант с определенным подходом .
- О, и TestDriven.NET предоставит вам интеграцию IDE как для NUnit, так и для MbUnit.
Я уверен, что с ними все в порядке. Однако я бы отказался от MSTest, если только вам не нравится удобство наличия всего в одной среде IDE из коробки.
У Скотта Хансельмана есть подкаст на эту самую тему.
Мне нравится MbUnit , э-э, Галлио . Для меня важнее всего наличие хорошей поддержки инструментов в Visual Studio. Для этого я использую Resharper , в котором есть средство запуска тестов MbUnit . Многим людям нравится TestDriven.NET как средство запуска тестов.
Мне нравится TestDriven.NET (хотя я использую ReSharper), и я очень доволен XUnit.net . Он использует факты вместо тестов, которые многим не нравятся, но мне нравится разница в терминологии. При внесении изменений полезно подумать о коллекции автоматически доказываемых фактов о вашем программном обеспечении и посмотреть, какие из них вы нарушаете.
Имейте в виду, что Visual Studio 2008 Professional (и выше) теперь поставляется со встроенным модульным тестированием (раньше оно было доступно только с выпусками Team System) и может подойти для ваших нужд.
Похоже, что xUnit.net предлагает несколько иной подход к NUnit, MbUnit и MSTest , что интересно.
В моем поиске решения, подобного RSpec (потому что мне нравится RSpec), я также наткнулся на NSpec , который выглядит немного многословным, но в сочетании с надстройкой NSpec Extensions для использования методов расширения C# 3 выглядит довольно красиво.
Здесь мы используем NUnit и MbUnit . Мы используем TestDriven.NET для запуска модульных тестов из Visual Studio. Мы используем превосходный, очень рекомендуемый RhinoMocks в качестве фиктивного фреймворка.
Раньше я использовал NUnit, но перешел на MbUnit, так как в нем больше возможностей.
Я люблю RowTest. Это позволяет параметризовать ваши тесты. Тем не менее, у NUnit есть немного лучшая поддержка инструментов. Я использую ReSharper для запуска тестов MbUnit. У меня были проблемы с TestDriven.NET при запуске моих методов SetUp для MbUnit.
Раньше я использовал NUnit, но теперь, как правило, использую MbUnit для двух основных функций: 1. Функция RowTest позволяет легко запускать один и тот же тест с разными наборами параметров, что важно, если вы действительно хотите тщательного охвата. 2. Функция отката позволяет запускать тесты для вашей базы данных, откатывая изменения после каждого теста, сохраняя вашу базу данных в одном и том же состоянии каждый раз. И это так же просто, как добавить атрибут [Откат].
Еще одним приятным аспектом MbUnit является то, что его синтаксис почти идентичен NUnit, поэтому, если у вас уже есть весь тестовый стенд под NUnit, вы можете просто отключить ссылки без необходимости изменять какой-либо (очень?) Код.
Я использую следующее:
TestDriven.NET - надстройка модульного тестирования для Visual Studio
Typemock Isolator - фреймворк имитаций для модульного тестирования .NET
NUnit - фреймворк для модульного тестирования с открытым исходным кодом на C#.