使用Visual Studio 2015 Intellitest进行参数化单元测试

ger*_*erg 7 c# unit-testing parameterized-unit-test visual-studio-2015 intellitest

我希望在MSTest中长期看到的一个功能是参数化单元测试(PUT).我很高兴听到Intellitest 能够创建所述测试.我开始玩Intellitest,但我认为我对PUT的定义与微软不同.

当我想到"PUT"时,我认为NUnit中的TestCasesxUnit中的Theories.比我聪明的人似乎使用相同的术语.

有人能告诉我Intellitest是否真的能够以与NUnit或xUnit相同的方式创建PUT,或者这是一个重载术语的问题,这意味着Intellitest中的一件事,而另一部分是大多数其他测试框架的问题?谢谢.

Jer*_*ney 7

截至2016年6月,此功能已添加到" MSTest V2 ",可以通过添加MSTest.TestAdapterMSTest.TestFramework包来通过NuGet安装:

Install-Package MSTest.TestAdapter
Install-Package MSTest.TestFramework
Run Code Online (Sandbox Code Playgroud)

请注意,这些与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);
}
Run Code Online (Sandbox Code Playgroud)

显然,你不仅限于int此.你也可以使用string,float,bool,或任何其他原始值类型.

如果您熟悉该实现,这与Windows Store App项目以前可用的实现相同.


ger*_*erg 5

Intellitest生成的参数化单元测试通常在其他测试框架中找到的PUT不同.

在MSTest/Intellitest世界中,PUT用于智能地生成其他单元测试.

为了在MSTest中使用不同的数据集执行多次测试,我们仍然需要与如何使用MSTest的RowTest中的建议进行数据驱动的单元测试或使用MSTestHacks?.