Я считаю эту TestCase
функцию в NUnit весьма полезной как быстрый способ указать параметры теста без необходимости использовать отдельный метод для каждого теста. Есть ли что-нибудь подобное в MSTest?
[TestFixture]
public class StringFormatUtilsTest
{
[TestCase("tttt", "")]
[TestCase("", "")]
[TestCase("t3a4b5", "345")]
[TestCase("3&5*", "35")]
[TestCase("123", "123")]
public void StripNonNumeric(string before, string expected)
{
string actual = FormatUtils.StripNonNumeric(before);
Assert.AreEqual(expected, actual);
}
}
DataRow()
, см .: blogs.msdn.microsoft.com/devops/2016/06/17/…Ответы:
Недавно Microsoft анонсировала «MSTest V2» (см. Статью в блоге ). Это позволяет последовательно (рабочий стол, UWP, ...) использовать
DataRow
-attribute!Опять же, обозреватель тестов Visual Studio Express, к сожалению, не распознает эти тесты. Но, по крайней мере, «полные» версии VS теперь поддерживают эту функцию!
Чтобы использовать его, просто установите пакеты NuGet MSTest.TestFramework и MSTest.TestAdapter (оба предварительные выпуски на данный момент).
Старый ответ:
Если вам не нужно придерживаться MSTest, и вы просто используете его для запуска тестов через Test Explorer
потому что у вас есть только версия Visual Studio Express, то это может быть решением для вас:Существует расширение VsTestAdapter VSIX для возможности запускать тесты NUnit через обозреватель тестов. К сожалению, пользователи VS Express не могут устанавливать расширения ... Но, к счастью, VsTestAdapter поставляется с простым пакетом NuGet !
Итак, если вы пользователь VS Express, просто установите NuGet-пакет VsTestAdapter и наслаждайтесь запуском тестов / тестовых наборов NUnit через обозреватель тестов!К сожалению, вышеупомянутое утверждение не соответствует действительности. Хотя вполне возможно установить пакет через выпуск Express, это бесполезно, так как он не может использовать Test Explorer. Ранее было примечание о более старой версии TestAdapter, которая была удалена со страницы описания 2.0.0 :
источник
Я знаю, что это запоздалый ответ, но, надеюсь, это поможет другим.
Я везде искал элегантное решение и в итоге написал его сам. Мы используем его в более чем 20 проектах с тысячами модульных тестов и сотнями тысяч итераций. Ни разу не промахнулся.
https://github.com/Thwaitesy/MSTestHacks
1) Установите пакет NuGet .
2) Наследуйте свой тестовый класс от TestBase
3) Создайте свойство, поле или метод, который возвращает IEnumerable
4) Добавьте атрибут MSTest DataSource в свой тестовый метод, указав на имя IEnumerable выше. Это должно быть полностью квалифицировано.
Конечный результат: 3 итерации, как в обычном DataSource :)
источник
Я знаю, что это еще один поздний ответ, но в моей команде, которая привязана к использованию среды MS Test, мы разработали метод, который полагается только на анонимные типы для хранения массива тестовых данных и LINQ для циклического просмотра и тестирования каждой строки. Он не требует дополнительных классов или фреймворков, и его довольно легко читать и понимать. Это также намного проще реализовать, чем тесты, управляемые данными, с использованием внешних файлов или подключенной базы данных.
Например, предположим, что у вас есть такой метод расширения:
Вы можете использовать массив анонимных типов в сочетании с LINQ для написания таких тестов:
При использовании этого метода полезно использовать форматированное сообщение, включающее входные данные в Assert, чтобы помочь вам определить, какая строка вызывает сбой теста.
Я писал об этом решении с более подробной информацией и подробностями на AgileCoder.net .
источник
Khlr дал хорошие подробные объяснения, и, видимо, этот подход начал работать в VS2015 Express for Desktop. Я попытался оставить комментарий, но отсутствие репутации не позволило мне это сделать.
Позвольте мне скопировать решение здесь:
Чтобы использовать его, просто установите пакеты NuGet MSTest.TestFramework и MSTest.TestAdapter .
Одна проблема
Итак, удалите Microsoft.VisualStudio.QualityTools.UnitTestFramework из ссылок на проект.
Вы можете отредактировать исходный ответ и удалить этот.
источник
MSTest имеет атрибут DataSource, который позволит вам передать ему таблицу базы данных, csv, xml и т. Д. Я использовал его, и он хорошо работает. Я не знаю, как поместить данные прямо выше в виде атрибутов, как в вашем вопросе, но очень легко настроить внешние источники данных, и файлы могут быть включены в проект. У меня он работал час с момента начала, и я не специалист по автоматическому тестированию.
https://msdn.microsoft.com/en-us/library/ms182527.aspx?f=255&MSPPError=-2147217396 содержит полное руководство, основанное на вводе базы данных.
http://www.rhyous.com/2015/05/11/row-tests-or-paramerterized-tests-mstest-xml/ содержит руководство, основанное на вводе файла XML.
источник