我在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));
}
答案 0 :(得分:35)
我知道这是一个老问题,但现在在https://blogs.msmvps.com/bsonnino/2017/03/18/parametrized-tests-with-ms-test/发表了一篇很好的演练
简而言之,您需要安装MSTest.TestFramework
和MSTest.TestAdapter
,并删除对Microsoft.VisualStudio.QualityTools.UnitTestFramework
的引用。然后,您可以使用[DataTestMethod]
属性指定参数化测试,并根据您的示例使用[DataRow]
属性添加参数。 [DataRow]
属性中的值将按照指定的顺序传递给测试方法。
请注意,[DataRow]
属性中的值必须为基元,因此您不能使用DateTime
或decimal
。如果你想要它们,你将不得不解决这个限制(例如,不是用DateTime
参数来表示日期,你可以有三个表示年,月和日的整数参数,并创建{{1}在测试体内)。
答案 1 :(得分:12)
最后,添加了此功能(仍处于预发布状态) 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)删除旧测试库的refenrece,因为它具有在相同名称空间中定义的相同属性 - 这样做是为了实现向后兼容性
Microsoft.VisualStudio.QualityTools.UnitTestFramework
答案 2 :(得分:8)
看起来这只能在WinRT / Metro的单元测试项目中使用,现在更新2,Windows Phone 8。对于我为什么不能用mstest进行所有测试,这是一个谜。