2013-04-10 129 views
13

我已经看到了有关Visual Studio更新2关于这些属性的微软视频。然而,我找不到任何关于他们的其他信息,也无法获得与他们一起构建的项目。DataTestMethod和DataRow属性在MSTEST

有谁知道它们或如何让他们的工作什么?

谢谢。

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

检查:[?如何运行与MSTest的多个参数的测试方法(http://stackoverflow.com/questions/9021881/how-to-run-a-test-method-with-multiple-parameters -in-MSTEST#13710788)。 – Schaliasos 2013-04-10 09:09:46

+0

非常感谢。任何线索为什么它的使用如此有限? – 2013-04-10 09:37:49

+0

我真的不知道。但你可以在[UserVoice](http://visualstudio.uservoice.com/forums/121579-visual-studio/category/31481-net)中添加它:) – Schaliasos 2013-04-10 09:43:26

回答

8

看来这只是针对WinRT中/地铁的单元测试项目中可用,现在更新2的Windows Phone 8,这是一个谜我为什么这是不能用于MSTEST所有的测试。

+1

现在呢 - 或者至少会在下一个MSTest的https://blogs.msdn.microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with-mstest-v2/ – 2016-08-08 08:26:23

+1

它的版本现在可作为一个NuGet包的https: //blogs.msdn.microsoft.com/visualstudioalm/2016/06/17/taking-the-mstest-framework-forward-with-mstest-v2/ – ironstone13 2016-11-23 14:18:24

6

最后,这一功能已经被添加(仍处于预发布版) 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 
+1

写得很好。免费执行时间;简单的输出日志和现在的功能如'DataTestMethod' MSTest-v2是一个竞争性的单元测试框架。 – Aaron 2017-01-04 03:47:42

10

我知道这是一个老问题,但现在在https://blogs.msmvps.com/bsonnino/2017/03/18/parametrized-tests-with-ms-test/

发表一言以蔽之一个很好的演练,您需要安装MSTest.TestFrameworkMSTest.TestAdapter,并移除Microsoft.VisualStudio.QualityTools.UnitTestFramework引用。然后,您可以使用[DataTestMethod]属性指示参数化测试,并可以使用[DataRow]属性添加参数,如您的示例所示。来自[DataRow]属性的值将按照指定的顺序传递给测试方法。

请注意,[DataRow]属性中的值必须是基元,因此您不能使用DateTimedecimal例如。如果您需要它们,则必须解决此限制(例如,不是使用DateTime参数来表示日期,而是可以有三个代表年,月和日的整数参数,并在测试正文中创建DateTime)。

+1

非常感谢Tim的回答。如果任何人出于某种原因与MSTest完全绑定,那么这是个好消息。如果不是,那么我强烈建议更改为NUnit,XUnit等。微软根本就不重视测试或TDD。我们将一个非常大的项目从MSTest改为NUnit,只需很少的工作就可以开启一个更加全面的测试框架,这个框架正在积极开发之中。微软需要4年的时间才能实现这个简单的功能。 – 2017-09-18 16:33:37

+1

传递'DateTime'的'int'测试有帮助。在我的情况下,测试不同的时间2,3,4。 – SushiGuy 2018-02-16 18:12:53