nUnit против xUnit? - PullRequest
       16

nUnit против xUnit?

42 голосов
/ 19 марта 2012

Где разница между nUnit и xUnit.net ?Какой смысл разрабатывать два из них, а не только один?

Я читал, что xUnit разрабатывается изобретателем nUnit:

xUnit.net - инструмент для модульного тестированиядля .NET Framework. Написано оригинальным изобретателем NUnit

В другой руке:

NUnit является структурой модульного тестирования для всех.Net languages ​​.. текущий производственный выпуск, версия 2.6, является седьмым основным выпуском этого xUnit инструмента модульного тестирования

Так где же правда?

Ответы [ 4 ]

32 голосов
/ 24 октября 2016

Ответы устарели, поэтому я решил предоставить обновление: На момент написания этого ответа последняя версия NUnit была v3.5, а xUnit.net - v2.1

Обе платформы великолепны, они поддерживают параллельное выполнение тестов (хотя и по-разному), NUnit существует с 2002 года, он широко используется, хорошо документирован и имеет большое сообщество, тогда как xUnit.net является более современным, более привязанным к TDD и более расширяемым, а также популярным в разработке ядра .net. Это также хорошо задокументировано.

В дополнение к этому, основное отличие, которое я заметил, заключается в том, что xUnit.net выполняет методы тестирования. Итак, в NUnit у нас есть тестовый класс и набор тестовых методов в нем. NUnit создает новый экземпляр класса test, а затем запускает все методы tests из одного экземпляра. Принимая во внимание, что xUnit.net создает новый экземпляр класса test для каждого из методов тестирования. . Следовательно, нельзя использовать поля или свойства для обмена данными между методами тестирования, что является плохой практикой, поскольку наши методы тестирования будут зависеть друг от друга, что недопустимо в TDD. Поэтому, если вы используете xunit.net, вы можете быть уверены, что ваши методы тестирования полностью изолированы.

Если вы хотите поделиться некоторыми данными между вашими методами тестирования, xUnit позволит вам это сделать. Следовательно, по умолчанию все методы тестирования полностью изолированы, но вы можете намеренно нарушить эту изоляцию в определенных случаях. Мне нравится это отношение, поэтому оно мне нравится больше.

В соответствии с различием, упомянутым в отношении создания экземпляров класса тестирования, функция параллельного запуска теста работает по-разному в двух платформах. В NUnit.net методы тестирования одного класса выполняются в одном потоке (не параллельно), но он выполняет тесты каждого класса в отдельном потоке. Принимая во внимание, что xUnit.net не имеет ограничений в параллелизме, поскольку он создает новый экземпляр для каждого метода тестирования.

22 голосов
/ 19 марта 2012

Вы путаете название одного инструмента ( xUnit.net ) с именем целого класса платформ модульного тестирования ( xUnit , x со ссылкой на язык / среду, например, JUnit, NUnit, ...).

2 голосов
/ 18 августа 2016

Одним из преимуществ xUnit является то, что он находит тесты в разных классах, он запускает их параллельно .Это может сэкономить много времени, если у вас много тестовых случаев.

Вы, конечно, можете отключить это или контролировать его работу (количество потоков, потоков в классе, тестов в сборке и т. Д.

Ознакомьтесь с этим примером решения с двумя тестовыми проектами, один из которых использует xUnit, другой NUnit

Подробнее о параллельных тестах в xUnit можно прочитать здесь

2 голосов
/ 27 октября 2015

xUnit Плюсы: xUnit следует новой концепции, избегая старых методов «SetUp» и «TearDown». Это заставляет нас использовать IDisposable и конструктор, как мы должны это делать как разработчики .NET. Также у xUnit есть четкая концепция совместного использования контекста.

xUnit Минусы: Возможность получения контекста теста еще не реализована.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...