5

Одной из особенностей, которую я хотел видеть в MSTest в течение длительного времени, была параметрическая модульная проверка (PUT). Я был рад услышать, что Intellitest would be capable of creating said tests. Однако я начал играть с Intellitest, и я думаю, что мое определение PUT отличается от Microsoft.Параметрированные модульные тесты с Visual Studio 2015 Intellitest

Когда я думаю «PUT», я думаю, TestCases in NUnit, или Theories in xUnit. Люди гораздо умнее меня seem to use the same terminology.

Может ли кто-нибудь сказать мне, может ли Intellitest создать PUT таким же образом, как NUnit или xUnit, или это проблема перегруженного термина, означающего одно в Intellitest, а другое - для большинства других тестовых фреймворков? Благодарю.

ответ

5

Испытание с параметризованным модулем, генерируемое Intellitest, равно , но не такое же, что и PUT, обычно встречающееся в других тестовых средах.

В мире MSTest/Intellitest PUT используются для intelligently generate other unit tests.

Для того, чтобы выполнить проверку несколько раз с различными наборами данных в MSTest, нам еще нужно бороться с Data-Driven Unit Tests или использовать MSTestHacks, как предложено в How to RowTest with MSTest?.

1

Параметрированный модульный тест (PUT) - это простое обобщение модульного теста с использованием параметров. PUT делает заявления о поведении кода для всего набора возможных входных значений, а не только одного примерного входного значения. В такой степени он похож на ссылки, которые вы предоставляете. Там, где он отличается, возникает вопрос о создании данных для подачи в параметризованный модульный тест. IntelliTest может автоматически генерировать входные данные для PUT. Прошу вас обратиться к следующему: http://blogs.msdn.com/b/visualstudioalm/archive/2015/07/05/intellitest-one-test-to-rule-them-all.aspx для контекста.

0

As of June 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 или любые другие primitive value type.

Это идентично реализации, ранее доступной для Windows Store App projects, если вы знакомы с этой реализацией.

Смежные вопросы