8

长期以来,我一直希望在 MSTest 中看到的一项功能是参数化单元测试 (PUT)。我很高兴听到 Intellitet能够创建上述测试。但是,我已经开始使用 Intellitetest,并且我认为我对 PUT 的定义与 Microsoft 的不同。

当我想到“PUT”时,我会想到NUnit中的 TestCases 或xUnit 中的 Theories。比我聪明得多的人似乎使用相同的术语

有人可以告诉我 Intellitetest 是否真的能够以与 NUnit 或 xUnit 相同的方式创建 PUT,或者这是一个重载术语的问题,在 Intellitet 中意味着一件事,而对于大多数其他测试框架来说又是另一件事?谢谢。

4

3 回答 3

7

截至 2016 年 6 月,此功能已添加到“ MSTest V2 ”中,可以通过 NuGet 通过添加MSTest.TestAdapterMSTest.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这里。您还可以使用stringfloatbool或任何其他原始值类型

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

于 2017-10-30T20:12:34.843 回答
6

Intellitet 生成的参数化单元测试其他测试框架中通常发现的 PUT 不同。

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

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

于 2015-08-01T23:19:11.797 回答
1

参数化单元测试 (PUT) 是通过使用参数对单元测试的直接概括。PUT 对整个可能的输入值集的代码行为进行陈述,而不仅仅是单个示例性输入值。在这个程度上,它类似于您提供的链接。不同之处在于生成数据以输入参数化单元测试 - IntelliTest 可以自动为 PUT 生成输入数据。我请求您参考以下内容:http: //blogs.msdn.com/b/visualstudioalm/archive/2015/07/05/intellitest-one-test-to-rule-them-all.aspx了解上下文。

于 2015-08-02T14:34:09.167 回答