Параметризованные модульные тесты с помощью Visual Studio 2015 Intellitest
Одна из особенностей, которую я давно хотел увидеть в MSTest, это параметризованные модульные тесты (PUT). Я был рад услышать, что Intellitest сможет создавать указанные тесты. Однако я начал играть с Intellitest и думаю, что мое определение PUT отличается от определения Microsoft.
Когда я думаю "PUT", я думаю о TestCases в NUnit или Theories в xUnit. Люди гораздо умнее меня, похоже, используют одну и ту же терминологию.
Может кто-нибудь сказать мне, действительно ли Intellitest способен создавать PUT таким же образом, как это делают NUnit или xUnit, или это проблема перегруженного термина, означающего одно в Intellitest, а другое для большинства других сред тестирования? Благодарю.
3 ответа
Параметризованный модульный тест, сгенерированный Intellitest, отличается от PUT, обычно используемого в других средах тестирования.
В мире MSTest/Intellitest PUT используются для интеллектуальной генерации других модульных тестов.
Чтобы выполнить тест несколько раз с различными наборами данных в MSTest, нам все еще нужно бороться с модульными тестами, управляемыми данными, или использовать MSTestHacks, как предложено в разделе Как выполнить RowTest с MSTest?,
По состоянию на июнь 2016 года эта функция была добавлена в " MSTest V2 ", который можно установить через NuGet, добавив MSTest.TestAdapter
а также MSTest.TestFramework
пакеты:
Install-Package MSTest.TestAdapter
Install-Package MSTest.TestFramework
Имейте в виду, что они отличаются от версии тестовой среды, которая поставляется, например, с Visual Studio 2017. Чтобы их использовать, вам, вероятно, потребуется удалить ссылку (и) на
Microsoft.VisualStudio.QualityTools.UnitTestFramework
,
После того, как они установлены, вы можете просто использовать RowDataAttribute
, как показано в следующем примере:
[TestMethod]
[DataRow(1, 1, 2)]
[DataRow(3, 3, 6)]
[DataRow(9, -4, 5)]
public void AdditionTest(int first, int second, int expected) {
var sum = first+second;
Assert.AreEqual<int>(expected, sum);
}
Очевидно, вы не ограничены
int
Вот. Вы также можете использоватьstring
,float
,bool
или любой другой тип примитивного значения.
Это идентично реализации, ранее доступной для проектов приложений Магазина Windows, если вы знакомы с этой реализацией.
Параметризованный модульный тест (PUT) - это простое обобщение модульного теста с использованием параметров. PUT делает заявления о поведении кода для всего набора возможных входных значений, а не только для одного примерного входного значения. В этом смысле он похож на ссылки, которые вы предоставляете. Отличие заключается в том, что при создании данных для подачи в параметризованный модульный тест IntelliTest может автоматически генерировать входные данные для PUT. Я прошу вас, пожалуйста, обратитесь к следующему: http://blogs.msdn.com/b/visualstudioalm/archive/2015/07/05/intellitest-one-test-to-rule-them-all.aspx для контекста.