53

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

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

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

3 回答 3

64

最初在https://blogs.msmvps.com/bsonnino/2017/03/18/parametrized-tests-with-ms-test上发布了一个很好的演练(链接现在通过回程机器存档)。

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

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

于 2017-09-18T12:42:02.580 回答
17

最后,已添加此功能(仍处于预发布阶段) 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
于 2016-11-23T14:17:53.927 回答
8

看来这仅在 WinRT/Metro 的单元测试项目中可用,现在在更新 2、Windows Phone 8 中可用。这对我来说是一个谜,为什么它不适用于 mstest 的所有测试。

于 2013-04-10T09:36:56.097 回答