2016-06-27 4 views
10

Я понимаю, что на эту тему было много вопросов, но почему-то я не нашел того, что отвечало моим потребностям.VS 2013 MSTest vs nUnit vs xUnit

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

Всюду по Интернету я читаю негативные отзывы о MSTest, но это, пожалуй, самый удобный инструмент для меня для нашей цели.

1) Наше приложение .NET

2) Мы используем лицензированный VS IDE для нашего развития всей команды.

3) Источник управления является Team Foundation Server 2010

4) Мы планируем интегрировать CI/CD как часть нашего процесса поставки программного обеспечения.

Я чувствую, что MSTest интегрируется прямо в эту настройку и обеспечивает самый чистый интерфейс для нас. Есть ли существенное преимущество в отношении NUnit или xUnit over MSTest что мы должны рассмотреть?

+0

Написано в 2010 году, по-прежнему действует сегодня: http://blog.ploeh.dk/2010/04/26/WhyImmigratingfromMSTesttoxUnit.net –

+1

Возможный дубликат [Visual Studio 2013 MSTest vs NUnit] (http://stackoverflow.com/questions/22650263/visual-studio-2013-mstest-vs-nunit) –

ответ

26

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

Это говорит о том, что в MSTest нет ничего плохого, особенно если ваша команда не очень опытная с модульным тестированием. Он хорошо интегрирован с Visual Studio и с TFS, поэтому добавление тестов довольно безболезненно. И NUnit, и XUnit тоже хорошо интегрируются, но могут потребоваться дополнительные настройки.

Идите вперед и начните с MSTest. Это простое введение в модульное тестирование. Если вы начнете использовать некоторые ограничения MSTest, то это довольно простая миграция на NUnit или xUnit. Для простых случаев это просто вопрос об изменении пакетов NuGet, а затем поиск/замена атрибутов.

Когда дело доходит до выбора между xUnit и NUnit, оба варианта - отличный выбор, но у каждого есть другая философия. NUnit имеет тенденцию быть более гибким и позволяет использовать ряд стилей тестирования и может использоваться для интеграционных тестов. Он, однако, достаточно гибок, чтобы позволить вам стрелять в ногу и позволяет писать тесты, которые пуристы будут хмуриться. NUnit оставляет выбор до вас.

xUnit однако имеет тенденцию быть немного более самоуверенным и подталкивает вас к «яме успеха» с модульным тестированием. По моему опыту, он отлично подходит для проектов с зелеными полями, но он может затруднить тестирование некоторых проектов с плохо сконструированным коричневым полем без рефакторинга.

В конце концов, вы не ошибетесь ни в одной из этих тестовых фреймворков.

+2

Я был в аналогичной позиции около 2000, пытаясь выбрать один из шести тестовых рамок .NET. Я выбрал NUnit, и вот я. :-) – Charlie

+0

2000? lol @Charlie, ничего себе! –

+1

Интересный пост для xUnit https://github.com/xunit/xunit/issues/350. Сообщение об ошибке подтверждения исчезло и не вернется в xUnit. Когда я вижу, что они закрывают проблему, пока она все еще спорна, я не уверен, что я должен верить в их будущее развитие. Как мы могли знать, что они больше ничего не удалят ради «чистоты»? – tia

9

Я хотел бы добавить один отрицательный аспект XUnit. У него нет даже базовой документации, ничего кроме «Начать». Нет API, ничего.

+0

Возможно, это изменилось? Я нашел его более чем адекватным. https://xunit.github.io/#documentation –

3

Вот краткий анализ 3-х рамок и оценка по цвету. enter image description here

Легенда Раскраска:

enter image description here

MSTest это только хорошо, потому что он прост и интегрирован в Visual Studio, и это происходит от Microsoft. Он не достаточно гибкий и не очень растяжимый. Но это больше, чем просто единая тестовая среда, она также поддерживает тесты интеграции, тесты производительности Web (load). Остальные 2 являются чистыми модулями тестирования. Поэтому я бы сказал, что MSTest - «Джек всех профессий, Мастер нет».

NUnit - мой выбор, потому что он был лучшим, достаточно продолжительным. Он более гибкий и простой с очень хорошей базой пользователей, документацией и поддержкой сообщества.

XUnit Меньше всего из-за моего выбора, поскольку он следует немного отличающемуся стилю и лично я не вижу большого преимущества над NUnit. В некоторых случаях вам нужно будет сделать некоторые рефакторинг кода, чтобы вписаться в тестовые примеры. Но это только мое мнение, поскольку многие предпочитают XUnit.