Какова лучшая платформа для модульного тестирования для .NET и почему? [закрыто]


26

Мне кажется, что все используют NUnit, даже не рассматривая другие варианты. Я думаю это потому что:

  • Все уже знакомы с ним, поэтому им не придется изучать новый API.
  • Он уже настроен с их сервером непрерывной интеграции для работы с NUnit.

Я ошибаюсь по этому поводу?

Я решил использовать xUnit на одном из моих собственных проектов недавно, и мне это нравится! Это имеет для меня гораздо больше смысла, и концептуально это похоже на определенный шаг вперед от NUnit.

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


6
Пожалуйста, определите лучше. Самые дешевые? проще всего кодировать? наименьшее количество строк кода на тест? stackoverflow.com/questions/680298/…
Амир Резаи

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

2
Если вы можете перефразировать ваш вопрос, тогда он может быть в порядке, в противном случае это просто вопрос «списка X», который не является конструктивным. Смотрите шесть рекомендаций для конструктивных субъективных вопросов
ChrisF

2
«Лучшее» - это глупая вещь, потому что очень редко можно найти единственное лучшее отчасти потому, что оно будет зависеть от контекста, а отчасти потому, что оно неизбежно в некоторой степени субъективно.
Мерф

10
Murph. Во-первых, этот сайт предназначен для субъективных вопросов. Во-вторых, я спрашиваю мнения, поэтому я хотел бы видеть, как другие интерпретируют «лучшее». И не называй меня тупым.
Никто

Ответы:


15

MSTest

Я лично использую MSTest. NUnit действительно хорош, но в VS2010 MSTest уже полностью интегрирован в IDE, и для него есть полные шаблоны проектов. Для .NET, если вы используете 2010, то я думаю, что MSTest - это путь (MSTest в VS2008, я не думаю, что это на должном уровне) просто для покрытия кода, запуска тестов и других инструментов, доступных вам. из коробки. (Если вы используете CodeRush или R #, то у них действительно отличные инструменты / инструменты для тестирования для других платформ тестирования)

Изменить: с тех пор я перешел на XUnit. : D


Я проголосовал как за MbUnit / Galio, так и за этот ответ. MbUnit / Galio просто лучше, но их руки связаны, когда дело доходит до запуска тестов MsTest, поскольку некоторые критические классы в этой библиотеке .Net являются окончательными и не расширяемыми. Однако, если вам нужно автоматизировать GUI, то поверх MsTest работают Coded UI и cuite.codeplex.com/documentation, так что нужно просто их использовать.
Работа

2
Проблема, с которой я столкнулся в MSTest, заключается в том, что он не поддерживает тестирование командной строки, это может быть проблемой, когда вы хотите запускать модули через CI.
CmdrTallen

1
Nunit теперь полностью интегрируется в VS, верно?
BKSpurgeon

Да, это так. Учитывая, что сейчас около 6 лет, я лично перешел в NUnit, а затем теперь в XUnit. Оба (и другие) имеют пакеты nuget, которые служат адаптерами для освещения той же функциональности VS, что и MSTest. Честно говоря, MSTest, вероятно, находится внизу списка на данный момент. Я бы проголосовал за XUnit или NUnit. В наши дни они крепкие, ухоженные и современные.
Райан Хейс

14

Я начал использовать Gallio / MbUnit несколько лет назад. И функции и жемчужины, которые он предоставляет, настолько мощные, что я никогда не жалел о своем выборе. Фактически, теперь я являюсь частью команды разработчиков проекта Gallio OSS; поэтому я могу внести свой вклад, чтобы сделать его еще более удивительным.

  • MbUnit обладает множеством мощных функций, которые просто облегчают жизнь моему разработчику (верификаторы контрактов, фабрики тестов, компаратор структурного равенства, комбинаторные тесты, инфраструктура генерации данных, анализ текста, утверждения xml, точки расширения и т. Д.)
  • Gallio предоставляет согласованную платформу для выполнения всех моих тестов с хорошим инструментарием отчетности. Мне также нравится тот факт, что я могу интегрировать тесты из других проектов OSS, которые не используют MbUnit, и просто запускать их вместе. Удобная интеграция со многими инструментами сторонних производителей также удобна (R #, PoSh, dotCover и т. Д.). Удивительная расширяемость инфраструктуры (например, я только что закончил писать тестовый адаптер для собственной неуправляемой среды тестирования C ++. Скоро будет частью будущего релиза)

Вики , безусловно , является хорошей отправной точкой для знакомства с Gallio и MBUnit v3. Это пропускает некоторые главы, но это уже полезно.


Компаратор структурного равенства и структура генерации данных звучат великолепно. Может ли MbUnit проводить тестирование на основе данных - то есть читать файлы csv / xsd и использовать их в качестве аргументов метода тестирования? Это одна из главных достопримечательностей xunit для меня.
Никто

Конечно. ASAIK MbUnit был первой платформой тестирования для .NET, которая представила тестирование на основе данных. Он может привязывать тестовые параметры к внутренним ([Row], [Column] и т. Д.) И внешним ([CsvData], [XmlData] и т. Д.) Источникам данных. Подробнее здесь: gallio.org/wiki/doku.php?id=mbunit:data-driven_testing
Ян Тревин,

Они исправили проблемы с производительностью, которые у них были с Gallio и visual studio? Был убийцей сделки для нас.
Уайетт Барнетт

Я использовал MbUnit, когда работал в небольшой компании, и это было здорово! Позже я использовал MsTest, потому что должен был, и все получилось хорошо. Я все еще предпочитаю писать явный код, а не настраивать параметры проекта. Корпоративная поддержка действительно помогает MSTest. Независимо от того, какой дизайн уродливый или красивый, вы знаете, что все, что выйдет из MSFT, будет хорошо протестировано.
Работа

@YannTrevin Каков статус Gallio / MbUnit? Я посмотрел на репозиторий Google Code, и в нем, похоже, нет последних изменений. Развитие происходит где-то еще, или проект остановлен?
Уэсли Уайзер

9

Выбор одного и использование его, пожалуй, самый важный шаг здесь.

Лично я бы выбрал NUnit по нескольким причинам. Прежде всего, это поддержка инструментов. Существует бесплатная надстройка для Visual Studio 2010 , и все основные сторонние плагины поддерживают ее. Каждая отдельная система сборки, утилита тестирования покрытия и CI-сервер поддерживают это. Во многих случаях без плагина. На уровне кода он может обрабатывать практически любой сценарий на данный момент - управляемые данными тесты, наследование, абстрактные тестовые классы, универсальные тестовые классы, установку, разбор и т. Д. В некоторой степени у нас есть xUnit, потому что NUnit получил слишком много функций и мощный.

Помимо NUnit, я думаю, что вы могли бы сделать довольно приличный аргумент в пользу MBUnit + Gallio, как упомянул Янн - это очень прочная основа. Той, которую следует избегать, если это вообще возможно, будет MSTest, который имеет несколько фатальных недостатков ИМХО. Недостатки, являющиеся некоторыми ограничениями на ваших тестовых классах, такие как отсутствие наследования, и зависимости от профессиональных или лучших SKU визуальных студий. В том числе требуется установить Visual Studio на сервере сборки для запуска тестов.


0

Одной из причин является то, что NUNIT стали более отраслевым стандартом, чем xUnit. Но лично я люблю Xunit.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.