MSTEST中的DataTestMethod和DataRow属性

本文关键字:DataRow 属性 DataTestMethod 中的 MSTEST | 更新日期: 2023-09-27 18:08:19

我在一个关于Visual Studio更新2的微软视频中看到了这些属性。但是,我找不到关于它们的任何其他信息,也找不到用它们构建的项目。

有谁知道这些属性或者如何让它们工作吗?

[DataTestMethod]
[DataRow("a", "b")]
[DataRow(" ", "a")]
public void TestMethod1(string value1, string value2)
{
    Assert.AreEqual(value1 + value2, string.Concat(value1, value2));
}

MSTEST中的DataTestMethod和DataRow属性

有一个很好的指南最初发布在https://blogs.msmvps.com/bsonnino/2017/03/18/parametrized-tests-with-ms-test(链接现在是存档的wayback机器)。

简而言之,您需要安装MSTest.TestFrameworkMSTest.TestAdapter,并删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework的引用。然后,您可以使用[DataTestMethod]属性指示参数化测试,并可以使用[DataRow]属性添加参数,如您的示例所示。[DataRow]属性的值将按照指定的顺序传递给测试方法。

注意,[DataRow]属性中的值必须是原语,因此不能使用DateTimedecimal。如果你想要它们,你将不得不绕过这个限制(例如,你可以用三个整数参数来表示年、月和日,而不是用DateTime参数来表示日期,并在测试体中创建DateTime)。

最后,这个功能已经添加(仍在预发布中)https://blogs.msdn.microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with-mstest-v2/

基本上,一个人必须做两件事:

1)安装两个NuGet包(版本并不重要,但这是我所拥有的)

  <package id="MSTest.TestAdapter" version="1.1.5-preview" targetFramework="net452" />
  <package id="MSTest.TestFramework" version="1.0.6-preview" targetFramework="net452" />
2)删除对旧测试库的引用,因为它在相同的命名空间中定义了相同的属性——这样做是为了实现向后兼容性
Microsoft.VisualStudio.QualityTools.UnitTestFramework

这似乎只在WinRT/Metro的单元测试项目中可用,现在更新2,Windows Phone 8。