12

我们被要求从 NUnit 迁移到 MSTest,现在必须将所有现有测试转换到新平台。其中大部分转换得很好,但我们在参数化测试方面遇到了问题。我们找到了以下网站,展示了如何编写扩展程序并下载了代码。

http://blogs.msdn.com/b/vstsqualitytools/archive/2009/09/04/extending-the-visual-studio-unit-test-type-part-2.aspx

然而,尽管它编译得很好,但 RowTestClass 测试都无法运行,并出现以下错误消息:

“无法初始化单元测试扩展‘urn:RunAsTestClassAttribute’:未为以下属性注册单元测试扩展:Microsoft.VisualStudio.Test.Sample.UnitTestTypeExtension.RunAsSample.RunAsTestClassAttribute。”

我们正在使用 VS2010 (10.0.40219.1 SP1Rel) (Microsoft .NET Framework 版本 4.0.30319 SP1Rel)

我想知道它是否与以下库有关:

Microsoft.VisualStudio.QualityTools.Common.dll
Runtime Version: v2.0.50727

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0\Microsoft.VisualStudio.QualityTools.Common.dll

Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll
Runtime Version: v4.0.30319

C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\PublicAssemblies\Microsoft.VisualStudio.QualityTools.UnitTestFramework.dll

Microsoft.VisualStudio.QualityTools.Vsip.dll
v4.0.30319

C:\Windows\Microsoft.Net\assembly\GAC_MSIL\Microsoft.VisualStudio.QualityTools.Vsip\v4.0_10.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualStudio.QualityTools.Vsip.dll

任何帮助使这项工作非常感谢。

4

3 回答 3

1

您是否注册了新类型(在Windows 注册表中)?教程中有一个关于如何做到这一点的部分- 看看Row Test Test Type Extension: Registering your test type extension

如果您遇到问题,请尝试从MSDN 代码库下载完整的代码 + 注册表项。

于 2013-09-23T08:36:14.277 回答
1

您可能想考虑使用SpecFlow使您的测试更加参数化。它传统上是一个 BDD 工具,但它允许您进行可重用的带有参数的步骤。

例如,您可以创建一个步骤说

"Given the user 'admin' exists."

在 c# 方面,您会得到这样的方法:

[Given(@"the user '(.*)' exists"]
public void GivenTheUserExists(string name)
{
    //create the user
}

展望未来,您可以在任何“功能文件”中重复使用该步骤,而无需重写该步骤的实现。

于 2015-03-19T16:30:28.213 回答
0

请参阅博文Extending Unit Tests in Visual Studio。看看你可能错过了什么。我尝试了同样的方法,它对我来说效果很好。

于 2013-05-28T07:49:40.080 回答