В чем разница между NUnit и xUnit.net ? Какой смысл в разработке двух из них, а не одного?
Я читал, что xUnit разрабатывается изобретателем NUnit:
xUnit.net - это инструмент модульного тестирования для .NET Framework. Написано оригинальным изобретателем NUnit
С другой стороны:
NUnit - это среда модульного тестирования для всех языков .Net. Текущий производственный выпуск, версия 2.6, является седьмым основным выпуском этого инструмента модульного тестирования на основе xUnit.
Так где же правда?
Ответы:
На момент написания этого ответа последняя версия NUnit - v3.5, а xUnit.net - v2.1.
Обе платформы великолепны, и обе поддерживают параллельное выполнение тестов (хотя и по-разному). NUnit существует с 2002 года, он широко используется, хорошо документирован и имеет большое сообщество, тогда как xUnit.net является более современным, более приверженным TDD, более расширяемым и также имеет тенденцию в разработке .NET Core. Это также хорошо задокументировано.
В дополнение к этому, основное отличие, которое я заметил, заключается в том, как xUnit.net запускает методы тестирования. Итак, в NUnit у нас есть тестовый класс и набор тестовых методов в нем. NUnit создает новый экземпляр тестового класса, а затем запускает все методы тестирования из того же экземпляра. В то время как xUnit.net создает новый экземпляр тестового класса для каждого из тестовых методов. . Следовательно, нельзя использовать поля или свойства для обмена данными между методами тестирования, что является плохой практикой, поскольку наши методы тестирования будут зависеть друг от друга, что недопустимо в TDD. Поэтому, если вы используете xunit.net, вы можете быть уверены, что ваши методы тестирования полностью изолированы.
Если вы хотите поделиться некоторыми данными между своими тестовыми методами, xUnit позволит вам это сделать. Таким образом, по умолчанию все методы тестирования полностью изолированы, но вы можете намеренно нарушить эту изоляцию в определенных случаях. Мне такое отношение нравится, поэтому оно мне больше нравится.
источник
Вы путаете название одного инструмента ( xUnit.net ) с названием целого класса фреймворков модульного тестирования ( xUnit , x относится к языку / среде, например, JUnit, NUnit, ...).
источник
xUnit Плюсы:
xUnit следует новой концепции, избегая старых методов «SetUp» и «TearDown». Это заставляет нас использовать IDisposable и конструктор так, как мы должны поступать как разработчики .NET. Также xUnit имеет четкую концепцию совместного использования контекста.
xUnit Минусы:
Доступность для получения тестового контекста пока не реализована.
источник
Одним из преимуществ xUnit является то, что он находит тесты в разных классах; он запускает их параллельно . Это может сэкономить много времени, если у вас много тестовых примеров.
Вы, конечно, можете отключить это или контролировать его работу (количество потоков, потоков на класс, тестов на сборку и т. Д.
Ознакомьтесь с этим примером решения с двумя тестовыми проектами, в одном из которых используется xUnit, а в другом - NUnit .
Подробнее о параллельных тестах в xUnit можно прочитать здесь .
источник