Ответы устарели, поэтому я решил предоставить обновление:
На момент написания этого ответа последняя версия 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 не имеет ограничений в параллелизме, поскольку он создает новый экземпляр для каждого метода тестирования.