Параметризованные модульные тесты с помощью 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 для контекста.

Другие вопросы по тегам