12

我们被要求从NUnit移动到MSTest,现在必须将所有现有测试转换为新平台。它大部分转换得很好,但是我们在参数化测试中遇到了问题。我们发现以下网站显示了如何编写扩展程序并下载了它的代码。单元测试 - 扩展Visual Studio单元测试类型 - 不工作

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

然而,虽然它编译精细,RowTestClass测试所有不能与下面的错误消息运行:

“未能初始化单元测试扩展名‘瓮: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 

任何帮助得到这个工作非常感谢。

+0

为什么你需要传递一个参数到你的单元测试方法? –

+0

基本上不必为每个测试参数重复相同的代码。它通过避免使用像if或switch语句一样的循环来使用逻辑,或者为外部文件或数据库创建依赖关系,从而保持代码清洁。 – ArchiFactor

+0

我会让测试方法调用另一个接受参数的非测试方法,并执行相应的断言。 –

回答

1

你有没有注册新的类型(在Windows Registry)?在the tutorial有一部分内容 - 看看行测试测试类型扩展:注册您的测试类型扩展

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

1

您可能想要考虑使用SpecFlow来使您的测试更具参数化。它传统上是一个BDD工具,但它可以让你制作可重复使用的参数。

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

"Given the user 'admin' exists." 

和C#的方面,你得到这样的方法:

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

展望未来,你可以重复使用任何“特征文件步骤“而不必重写该步骤的实施。

+1

这是如何回答原来的问题?你只是广告Specflow? – AdrianHHH

+0

我提供了一个看似不那么复杂的解决方案来参数化单元测试。如果这是广告免费工具,那么是的,我宣传它。 – bobby