NUnit против MbUnit против MSTest против xUnit.net [закрыто]

существует довольно много unittesting фреймворков .Сеть. Я нашел это небольшое сравнение функций:http://xunit.github.io/docs/comparisons.html

теперь я должен выбрать лучший для нас. Но как? Разве это имеет значение? Какой из них является самым будущим доказательством и имеет достойный импульс? Должен ли я заботиться о функциях? Хотя xUnit кажется самым современным и специально разработанным для .NET, NUnit снова кажется тем, который широко принят. MSTest снова уже интегрирован в Visual Studio ...

7 ответов


Я знаю, что это старая тема, но я думал, что я буду голосовать за xUnit.NET. Хотя большинство других упомянутых фреймворков тестирования практически одинаковы, xUnit.NET принял довольно уникальный, современный и гибкий подход к модульному тестированию. Он изменяет терминологию, поэтому вы больше не определяете TestFixtures и тесты...вы указываете факты и теории о своем коде, который лучше интегрируется с концепцией того, что такое тест с точки зрения TDD/BDD.

xUnit.NET также весьма extensible. Его классы атрибутов FactAttribute и TraitAttribute не запечатаны и предоставляют переопределяемые базовые методы, которые дают вам большой контроль над тем, как должны выполняться методы, которые эти атрибуты украшают. Пока xUnit.NET в своей форме по умолчанию позволяет писать тестовые классы, которые похожи на тестовые светильники NUnit с их методами тестирования, вы не ограничены этой формой модульного тестирования вообще. Вы можете расширить рамки поддержка BDD-стиль озабоченность / контекст / спецификации наблюдения, как показано здесь.

xUnit.NET также поддерживает тестирование fit-style непосредственно из коробки с его атрибутом теории и соответствующими атрибутами данных. Входные данные Fit могут быть загружены из excel, базы данных или даже пользовательского источника данных, такого как документ Word (путем расширения атрибута base data.) Это позволяет использовать единую платформу тестирования как для модульных тестов, так и для интеграционных тестов, которые могут будьте огромны в уменьшении зависимостей продукта и требуемой подготовки.

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


NUnit, вероятно, наиболее поддерживается сторонними инструментами. Он также существует дольше, чем остальные три.

Я лично не очень забочусь о Unit test Framework, издевательские библиотеки IMHO намного важнее (и запирают вас гораздо больше). Просто выбери одну и держись за нее.


Я бы не пошел с MSTest. Хотя это, вероятно, самое будущее доказательство фреймворков с Microsoft позади, это не самое гибкое решение. Он не будет работать в одиночку без некоторых хаков. Поэтому запустить его на сервере сборки, отличном от TFS, без установки Visual Studio сложно. Visual studio Test-runner на самом деле медленнее, чем Testdriven.Net + любой из других фреймворков. И поскольку выпуски этой платформы привязаны к выпускам Visual Studio, обновлений становится меньше и если вам нужно работать со старшим VS, вы привязаны к старшему MSTest.

Я не думаю, что это имеет значение, какой из других фреймворков вы используете. Очень легко переключаться с одного на другое.

Я лично использую XUnit.Net или Нанит в зависимости от предпочтений моих коллег. NUnit является самым стандартным. XUnit.Net это самый тонкий каркас.


рассмотрите возможность дополнения, а не замены MSTest другой платформой тестирования. Вы можете сохранить интеграцию Visual Studio MSTest, получая преимущества более полнофункциональной платформы тестирования.

например, я использую xUnit с MSTest. Добавьте ссылку на xUnit.dll сборка, и просто сделать что-то вроде этого. Удивительно, но это просто работает!

using Microsoft.VisualStudio.TestTools.UnitTesting;
using Assert = Xunit.Assert;  // <-- Aliasing the Xunit namespace is key

namespace TestSample
{
    [TestClass]
    public class XunitTestIntegrationSample
    {
        [TestMethod]
        public void TrueTest()
        {
            Assert.True(true);  // <-- this is the Xunit.Assert class
        }

        [TestMethod]
        public void FalseTest()
        {
            Assert.False(true);
        }
    }
}

Это не большое дело в небольшом / личном масштабе, но это может стать большим делом быстро в большем масштабе. Мой работодатель-большой магазин Microsoft, но не будет / не может купить Team System / TFS по ряду причин. В настоящее время мы используем Subversion + Orcas + MBUnit + TestDriven.NET и это работает хорошо, но получение TD.NET была огромная проблема. Чувствительность версии MBUnit + TestDriven.NET также большая перебранка, и иметь одну дополнительную коммерческую вещь (TD.NET) для юридического обзора и закупки для обработки и управления, не тривиальны. Моя компания, как и многие компании, полна и довольна моделью подписки MSDN, и она просто не привыкла обрабатывать одну закупку для сотен разработчиков. Другими словами, полностью интегрированное предложение MS, хотя, безусловно, не всегда лучшее из хлеба, является значительной добавленной стоимостью, на мой взгляд.

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


Это не большое дело, это довольно легко переключаться между ними. Интеграция MSTest также не имеет большого значения, просто возьмите testdriven.net.

Как сказал предыдущий человек, выберите насмешливый фреймворк, мой любимый на данный момент Moq.


Nunit не работает хорошо со смешанными проектами в C++, поэтому мне пришлось отказаться от него