Я использую утверждения NUnit в проекте MSTest следующим образом ( ПРИМЕЧАНИЕ: Это не должно иметь значения, чтобы увидеть комментарии к ответу Дейва Фолкнера):
using Microsoft.VisualStudio.TestTools.UnitTesting;
using MSTestExtensions;
using Assert = NUnit.Framework.Assert;
using Is = NUnit.Framework.Is;
Это сработало замечательнов моих модульных тестах, но в моих интеграционных тестах у меня возникли некоторые проблемы.Я думаю, что это может быть связано с MSTestExtensions, поскольку мои модульные тесты не использовали его.Кроме того, если я закомментирую оператор MSTestExtensions, используя оператор класса MSTestExtensionsTestFixture для класса и атрибут [TestTransaction]
, у меня нет этой проблемы.Добавление оператора using обратно не вызывает проблемы.Добавление атрибута [TestTransaction] не вызывает проблемы.Когда я наследую от MSTestExtensionsTestFixture в тестовом классе, проблема возникает сама собой.
В основном проблема заключается в том, что когда я выполняю следующий код в ситуации, когда он потерпит неудачу (такой как список actualPartNumbers, содержащий две части,в то время как ожидаемый список содержит только один), исключение AssertionException не обрабатывается MSTest.
Assert.That(actualPartNumbers, Is.EquivalentTo(expectedPartNumbers));
Таким образом, среда IDE останавливается на сгенерированном исключении, а не проходит тест.Иногда этого не происходит, и тест обычно не проходит.Но в большинстве случаев IDE останавливается на брошенном исключении.Есть идеи?
К вашему сведению: Я использую MSTestExtensions, чтобы я мог выполнять откат базы данных (атрибут [TestTransaction]
) после каждого теста.Это похоже на функцию отката MbUnit.Я переопределяю утверждения MSTest с помощью NUnit, потому что мне больше нравится свободный стиль.Наконец, я использую MSTest, потому что у меня проблемы с NUnit.Особенно с Microsoft Moles и конфликтует со сторонними ссылками, которые используют log4net .Я стараюсь изо всех сил настроить юнит-тесты / интеграционные тесты, чтобы они могли работать в любой среде в случае переключенияНо сейчас MSTest кажется наименее хлопотным, и интеграция в IDE очень приятна.