Существует довольно много платформ для тестирования модулей для .NET. Я нашел это небольшое сравнение функций: http://xunit.github.io/docs/comparisons.html
Теперь я должен выбрать лучший для нас. Но как? Это имеет значение? Какой из них наиболее перспективен на будущее и имеет достойный импульс? Должен ли я заботиться о функциях? В то время как xUnit кажется самым современным и специально разработанным для .NET, NUnit снова, кажется, широко принят. MSTest снова уже интегрирован в Visual Studio ...
Ответы:
Я знаю, что это старая ветка, но я решил опубликовать голосование за xUnit.NET . Хотя большинство других упомянутых сред тестирования в значительной степени одинаковы, xUnit.NET использует довольно уникальный, современный и гибкий подход к модульному тестированию. Это меняет терминологию, поэтому вы больше не определяете TestFixtures и Tests ... вы указываете факты и теории о вашем коде, что лучше интегрируется с концепцией того, что такое тест с точки зрения TDD / BDD.
xUnit.NET также чрезвычайно расширяемо. Его классы атрибутов FactAttribute и TraitAttribute не запечатаны и предоставляют переопределяемые базовые методы, которые дают вам большой контроль над тем, как должны выполняться методы, которые украшают эти атрибуты. Хотя xUnit.NET в его форме по умолчанию позволяет вам писать тестовые классы, которые похожи на тестовые приборы NUnit с их методами тестирования, вы не ограничены этой формой модульного тестирования вообще. Вы можете расширить платформу для поддержки спецификаций BDD-типа «Забота / Контекст / Наблюдение», как показано здесь .
xUnit.NET также прямо из коробки поддерживает тестирование в стиле соответствия с помощью своего атрибута Theory и соответствующих атрибутов данных. Подходящие входные данные могут быть загружены из Excel, базы данных или даже из пользовательского источника данных, такого как документ Word (путем расширения базового атрибута данных). Это позволяет использовать единую платформу для тестирования как модульных, так и интеграционных тестов, которые может быть огромным в снижении зависимости продукта и необходимого обучения.
Другие подходы к тестированию также могут быть реализованы с xUnit.NET ... возможности довольно безграничны. В сочетании с другой перспективной инфраструктурой Moq , они создают очень гибкую, расширяемую и мощную платформу для реализации автоматического тестирования.
источник
Trait
действительно делает, или если вы можете сгруппировать различные тесты в рамках одного родительского теста (например, все вtests
пределахtestfixture
). nUnit создает отличное иерархическое представление вместо плоского представления тестов xUnit. Плюс номенклатура не имеет смысла - факты и теория? Быть реалистичным! Это лучше называть тестами и данными.NUnit, вероятно, наиболее поддерживается сторонними инструментами. Это также было дольше, чем остальные три.
Лично меня не очень волнуют фреймворки модульных тестов, имхо библиотеки имхо гораздо важнее (и гораздо больше запирают вас). Просто выберите один и придерживайтесь его.
источник
Я бы не пошел с MSTest. Хотя это, вероятно, самое перспективное доказательство наличия фреймворков с Microsoft, это не самое гибкое решение. Он не будет работать в одиночестве без некоторых хаков. Поэтому запустить его на сервере сборки, отличном от TFS, без установки Visual Studio сложно. Визуальный тестовый прогон на самом деле медленнее, чем Testdriven.Net + любой другой фреймворк. А поскольку выпуски этой среды привязаны к выпускам Visual Studio, обновлений меньше, и если вам приходится работать со старыми VS, вы привязаны к более старому MSTest.
Я не думаю, что это имеет большое значение, какие из других фреймворков вы используете. Это действительно легко переключаться с одного на другой.
Я лично использую XUnit.Net или NUnit в зависимости от предпочтений моих коллег. NUnit является самым стандартным. XUnit.Net является самой простой структурой.
источник
Попробуйте дополнить, а не заменить MSTest другой средой тестирования. Вы можете сохранить интеграцию Visual Studio MSTest, получая при этом преимущества более полнофункциональной среды тестирования.
Например, я использую xUnit с MSTest. Добавьте ссылку на сборку xUnit.dll и просто сделайте что-то подобное. Удивительно, но это просто работает!
источник
Suprisingly, it just works!
Вы только что вызвали статическую функцию из другой сборки. Почему вы удивлены тем, что это работает? Также, если вам просто нужны утверждения, почему бы не использовать сборку, специально созданную для этого?Nunit плохо работает с проектами смешанного режима в C ++, поэтому мне пришлось отказаться от него
источник
Это не имеет большого значения в маленьком / личном масштабе, но это может быстро стать большим делом в большем масштабе. Мой работодатель - крупный магазин Microsoft, но я не буду / не могу покупать Team System / TFS по ряду причин. В настоящее время мы используем Subversion + Orcas + MBUnit + TestDriven.NET, и это работает хорошо, но получение TD.NET было огромной проблемой. Чувствительность версии MBUnit + TestDriven.NET также является большой проблемой, и наличие еще одной коммерческой вещи (TD.NET) для юридического контроля и закупок для обработки и управления не является тривиальной задачей. Моя компания, как и многие другие, полна и довольна моделью подписки MSDN, и она просто не используется для обработки разовых закупок для сотен разработчиков. Другими словами, полностью интегрированное предложение MS, хотя и не всегда лучшее, что есть, на мой взгляд, является существенной прибавочной стоимостью.
Я думаю, что мы останемся с нашим текущим шагом, потому что он работает, и мы уже преодолели горб организационно, но я действительно желаю, чтобы у MS было убедительное предложение в этом пространстве, чтобы мы могли немного консолидировать и упростить наш стек разработки.
источник
Это не имеет большого значения, довольно легко переключаться между ними. Интеграция MSTest также не имеет большого значения, просто зайдите на testdriven.net.
Как и предыдущий человек сказал, выбери насмешливые рамки, мой любимый на данный момент - Moq.
источник