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

Используя рекурсивное выражение общей таблицы (CTE), вы можете создать список дат, а затем выбрать из него. Очевидно, вы обычно не хотели бы создавать три миллиона дат, поэтому это просто иллюстрирует возможности. Вы можете просто ограничить диапазон дат внутри CTE и опустить предложение where из оператора select с помощью CTE.

with [dates] as (
    select convert(datetime, '1753-01-01') as [date] --start
    union all
    select dateadd(day, 1, [date])
    from [dates]
    where [date] < '9999-12-31' --end
)
select [date]
from [dates]
where [date] between '2013-01-01' and '2013-12-31'
option (maxrecursion 0)

В Microsoft SQL Server 2005 генерация списка CTE всех возможных дат заняла 1: 08. Генерация столетий заняла менее секунды.

374
задан Jim Bolla 26 October 2015 в 19:20
поделиться

7 ответов

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

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

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

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

193
ответ дан clows 26 October 2015 в 19:20
поделиться

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

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

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

105
ответ дан Turnkey 26 October 2015 в 19:20
поделиться

Рассмотрите возможность дополнения, а не замены 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);
        }
    }
}
19
ответ дан Matt Crouch 26 October 2015 в 19:20
поделиться

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

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

131
ответ дан Alexander Kojevnikov 26 October 2015 в 19:20
поделиться

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

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

8
ответ дан user8133 26 October 2015 в 19:20
поделиться

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

.
8
ответ дан Eric 26 October 2015 в 19:20
поделиться

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

Как и в предыдущем человеке, выберите «Прикол», мой любимый на данный момент - «Мок».

7
ответ дан 26 October 2015 в 19:20
поделиться
Другие вопросы по тегам:

Похожие вопросы: