VS 2013 MSTest против nUnit vs xUnit

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

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

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

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

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

3) Source Control - это Team Foundation Server 2010

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

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

Ответ 1

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

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

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

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

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

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

Ответ 2

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

Ответ 3

Вот краткий анализ 3-х рамок и рейтинг по цвету. введите описание изображения здесь

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

введите описание изображения здесь

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

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

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