Пакеты модульного тестирования .NET

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

Я знаком с NUnit (несколько лет назад) и немного поиграл с IronRuby с целью получить что-то вроде RSpec, но я не знаю многого, кроме этого.

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

Предложения?

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

Ответы 11

Мне нравится MbUnit, эээ, Галлио. Для меня важнее всего наличие хорошей поддержки инструментов в Visual Studio. Для этого я использую Решарпер, у которого есть Исполнитель тестов MbUnit. Многим людям нравится TestDriven.NET как средство запуска тестов.

Мне нравится TestDriven.NET (хотя я использую ReSharper), и я очень доволен XUnit.net. Он использует факты вместо тестов, которые многим не нравятся, но мне нравится разница в терминологии. При внесении изменений полезно подумать о коллекции автоматически доказываемых фактов о вашем программном обеспечении и посмотреть, какие из них вы нарушаете.

Имейте в виду, что Visual Studio 2008 Professional (и выше) теперь поставляется со встроенным модульным тестированием. (раньше он был доступен только с выпусками Team System) и может подойти для ваших нужд.

Ответ принят как подходящий

Их так много, что это безумие. Я думаю, безумно хорошо.

  • Для консервативных типов (я) NUnit все еще доступен и все еще более чем способен.
  • Для типов Microsoft подходит MSTest, но он медленный и неуклюжий по сравнению с NUnit. Ему также не хватает покрытия кода, и при этом не нужно платить большие деньги за дорогие версии Visual Studio.
  • Также есть MbUnit. Это похоже на NUnit, но у него есть отличные функции, такие как RowTest (запускать один и тот же тест с разными параметрами) и Rollback (вернуть базу данных, как вы ее нашли после теста).
  • И, наконец, xUnit.net - модный вариант с некоторым настроем.
  • О, и TestDriven.NET предоставит вам интеграцию IDE как для NUnit, так и для MbUnit.

Я уверен, что с ними все в порядке. Однако я бы отказался от MSTest, если только вам не нравится удобство наличия всего в одной среде IDE из коробки.

У Скотт Хансельман есть подкаст по этой теме.

+1, обратите внимание, что NUnit 2.5 имеет приятные функции RowTest, а также комбинаторное тестирование аргументов и т. д.

user7116 15.10.2008 18:40

Если вы спросите меня, разница между MSTest и NUnit не так уж велика. В основном это сводится к предпочтительному синтаксису, и если вы используете TesteDriven.Net, который также поддерживает MSTest, производительность практически такая же.

Kjetil Klaussen 05.02.2009 15:06

Да, NUnit 2.5 имеет функции RowTest через атрибут [TestCase].

Richard Szalay 20.07.2009 00:37

Похоже, что xUnit.net предлагает несколько иной подход к NUnit, MbUnit и MSTest, что интересно.

В моем поиске решения, подобного RSpec (потому что я люблю RSpec), я также наткнулся на NSpec, который выглядит немного многословным, но в сочетании с надстройкой Расширения NSpec для использования методов расширения C# 3 выглядит довольно красиво.

Вы можете посмотреть этот NSpec (nspec.org). Он почти идентичен RSpec.

Amir 13.08.2012 23:52

Здесь мы используем NUnit и MbUnit. Мы используем TestDriven.NET для запуска модульных тестов из Visual Studio. Мы используем отличный, очень рекомендуемый RhinoMocks в качестве фиктивного фреймворка.

Ссылка на RhinoMocks (фактически) не работает. Он перенаправляет на общую страницу.

Peter Mortensen 30.07.2020 14:02

Раньше я использовал NUnit, но я переключился на MbUnit, поскольку он имеет больше функций.

Я люблю RowTest. Это позволяет параметризовать ваши тесты. Тем не менее, у NUnit есть немного лучшая поддержка инструментов. Я использую ReSharper для запуска тестов MbUnit. У меня были проблемы с TestDriven.NET при запуске моих методов SetUp для MbUnit.

NUnit, MSTest и т. д. Делают примерно одно и то же. Однако я считаю, что NMock незаменим.

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

Придерживайтесь NUnit. Не подходите близко к MSTest.

Работать с NUnit + ReSharper - одно удовольствие.

Почему вам следует держаться подальше от MSTest? Я был бы признателен, если бы вы действительно потрудились рассказать, ПОЧЕМУ вы хотите держаться подальше от этого. И R # также работает с MSTest (с плагином Gallio).

Kjetil Klaussen 05.02.2009 15:07

Привет, Кьетил. В основном по трем причинам. 1. Метаданные, создаваемые тестами MS. Почему? Размышляйте как NUnit. 2. Тест-раннер ужасен. 3. NUnit все делает лучше - зачем менять. Некоторое время я делал это, но потом снова вернулся.

Iain Holder 05.02.2009 15:24

Я также столкнулся с различными ошибками с тестовым «бегуном» MS. В основном VS оставляет его работать в фоновом режиме, и при определенных обстоятельствах тесты, которые вы запускали 10 минут назад, могут мешать тому, который вы собираетесь запустить прямо сейчас :-(

Orion Edwards 17.03.2009 22:43

Примечание. Начиная с VS2017 / dotnetcore, Microsoft переписала все материалы MSTest. Теперь есть MSTestV2, а бегун / модель очень похожи на то, что вы ожидаете от NUnit и других подобных вещей, поэтому я думаю, что MSTest - гораздо более жизнеспособный вариант в наши дни.

Orion Edwards 08.01.2019 23:28

Интересно, посмотрю. Моему ответу уже более десяти лет, поэтому он, вероятно, менее точен, чем был раньше. :-)

Iain Holder 09.01.2019 17:37

Раньше я использовал NUnit, но теперь, как правило, использую MbUnit для двух основных функций: 1. Функция RowTest позволяет вам легко запускать один и тот же тест с разными наборами параметров, что важно, если вы действительно хотите получить полное покрытие. 2. Функция отката позволяет вам запускать тесты для вашей базы данных, откатывая изменения после каждого теста, сохраняя вашу базу данных в одном и том же состоянии каждый раз. И это так же просто, как добавить атрибут [Откат].

Еще одним приятным аспектом MbUnit является то, что его синтаксис почти идентичен NUnit, поэтому, если у вас уже есть весь тестовый стенд под NUnit, вы можете просто отключить ссылки без необходимости изменять какой-либо (очень?) Код.

Я использую следующее:

TestDriven.NET - Дополнение для модульного тестирования для Visual Studio

Изолятор Typemock - Mocking framework для модульного тестирования .NET.

NUnit - фреймворк для модульного тестирования с открытым исходным кодом на C#.

Возможно, вам будет интересно, что Gallio v3.1 теперь поддерживает RSpec через IronRuby.

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