Используете как MSTest, так и NUnit? - PullRequest
15 голосов
/ 20 февраля 2011

Читая о MSTest и NUnit, я не мог решить, что использовать в своем проекте. Мы используем TFS 2008 и VS2010.

Мне нравится MSTest за его интеграцию в VS2010, отчеты о непрерывной интеграции и охвате кода. Мне нравится NUnit, потому что он позволяет хорошо формулировать сложные операторы assert.

Спотыкаясь на http://alsagile.com/archive/2010/03/09/stop-the-war-between-nunit-and-mstest-make-them.aspx Я спрашиваю сообщество: возможно ли использовать оба?

Я также думаю о том, чтобы придерживаться MSTest и использовать http://fluentassertions.codeplex.com, чтобы дать мне более гибкий способ формулировки утверждений assert. Разве это не лучший вариант в конце концов?

Ответы [ 3 ]

23 голосов
/ 01 марта 2011

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

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

Просто для пояснения, MSTest не является платформой модульного тестирования Visual Studio, определенной в Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll assembly.

Чтобы позволить вашему модульному тесту запускаться в обеих платформах, вам необходимо определить постоянную сборки (здесь NUNIT) и с помощью директив препроцессора и псевдонимы пространства имен вы получите такой фрагмент кода:

#if !NUNIT
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Category = Microsoft.VisualStudio.TestTools.UnitTesting.DescriptionAttribute;
#else
using NUnit.Framework;
using TestInitialize = NUnit.Framework.SetUpAttribute;
using TestContext = System.Object;
using TestProperty = NUnit.Framework.PropertyAttribute;
using TestClass = NUnit.Framework.TestFixtureAttribute;
using TestMethod = NUnit.Framework.TestAttribute;
using TestCleanup = NUnit.Framework.TearDownAttribute;
#endif

Мне кажется, я впервые столкнулся с этой идеей в этой статье MSDN Magazine .Еще одно полезное сообщение в блоге, посвященное этой теме:

Для вашегопоследний вопрос: проект Fluent Assertions кажется хорошей библиотекой.Я не вижу каких-либо реальных причин, почему вы не должны использовать его, если вам нравится его свободный стиль.

2 голосов
/ 20 ноября 2012

Добавьте ссылку на nunit.framework и следующую строку в начало вашего класса тестеров MSTest ...

using NAssert = NUnit.Framework.Assert;

Теперь вы можете использовать либо ...

// Test whether a new SimplexInterpreter was created
[TestMethod]
public void SimplexInterpreterConstructorTest()
{
    Assert.IsNotNull(target);
    NAssert.IsNotNull(target);
}
1 голос
/ 20 февраля 2011

Один тестовый проект можно использовать с помощью MSTest, а другой - с помощью NUnit.Если вы хотите смешать оба в одном проекте, вам придется придерживаться общих функций и использовать директивы компилятора и использовать операторы для «переименования» и компиляции для определенных.

Вы должны запустить nunit и mstest, чтобы выяснить, все ли ваши тесты действительно пройдены, поэтому я настоятельно рекомендую не использовать оба.Выберите один.

Если вы хотите запускать тесты на сервере сборки, вероятно, лучшим выбором будет NUnit, если только вы не хотите установить VS на свой сервер сборки.TFS может работать без установки VS, но вам придется проверить свою документацию.

...