Это было полезно?

Решение

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

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

xUnit.NET также прямо из коробки поддерживает тестирование в стиле соответствия со своим атрибутом Theory и соответствующими атрибутами данных. Подходящие входные данные могут быть загружены из Excel, базы данных или даже из пользовательского источника данных, такого как документ Word (путем расширения базового атрибута данных). Это позволяет использовать единую платформу для тестирования как модульных, так и интеграционных тестов, которые может иметь огромное значение для снижения зависимости продукта и необходимого обучения.

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

Другие советы

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

Лично мне не очень важны фреймворки для юнит-тестов. ИМХО библиотеки для ИМХО гораздо важнее (и гораздо более замкнуты). Просто выберите один и придерживайтесь его.

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

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

Я лично использую XUnit.Net или NUnit в зависимости от предпочтений моих коллег. 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 было убедительное предложение в этом пространстве, чтобы мы могли консолидировать и упростить наш стек разработки. бит.

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top