MSTEST中的DataTestMethod和DataRow属性

Sim*_*ane 39 c# unit-testing mstest

我在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));
}
Run Code Online (Sandbox Code Playgroud)

Tim*_*Tim 41

我知道这是一个老问题,但现在有一个很好的演练发表在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在测试体内创建).

  • 非常感谢Tim的回答.如果由于某种原因任何人与MSTest完全联系,那么这是个好消息.如果没有,那么我强烈建议改为NUnit,XUnit等.微软根本不认真对待测试或TDD.我们将一个非常大的项目从MSTest改为NUnit,只做了很少的工作,为一个正在积极开发的功能更加全面的测试框架打开了大门.微软花了4年的时间来提供这个简单的功能. (2认同)

iro*_*e13 13

最后,添加了此功能(仍在预发行版中) 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" />
Run Code Online (Sandbox Code Playgroud)

2)删除旧测试库的refenrece,因为它具有在相同名称空间中定义的相同属性 - 这样做是为了实现向后兼容性

Microsoft.VisualStudio.QualityTools.UnitTestFramework
Run Code Online (Sandbox Code Playgroud)

  • 写得真好。有执行时间免费;简单的输出日志记录和现在的“DataTestMethod”等功能 MSTest-v2 是一个有竞争力的单元测试框架。 (2认同)

Sim*_*ane 8

看起来这只能在WinRT/Metro的单元测试项目中使用,现在可以使用更新2,Windows Phone 8.这对于我为什么不能用于mstest的所有测试都是一个谜.