如何让VS2010识别我的SpecFlow生成的mstests?

Tim*_*Dog 7 bdd visual-studio-2010 specflow

我已经将Specflow配置为定位MsTest框架(而不是NUnit),方法是在我的'specs'类库的app.config中指定它:

<configSections>
    <section name="specFlow"
   type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/>
</configSections>

<specFlow>
 <unitTestProvider name="MsTest.2010" />
</specFlow>
Run Code Online (Sandbox Code Playgroud)

所以一旦它到位,我可以看到我的测试夹具是由Specflow自定义工具正确生成的,具有正确的TestClassAttribute()和方法等:

[System.CodeDom.Compiler.GeneratedCodeAttribute("TechTalk.SpecFlow", "1.3.3.0")]
[System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
[Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute()]
...
Run Code Online (Sandbox Code Playgroud)

specs类构建,但现在我无法使用我的vista 64盒上的Visual Studio 2010中的Test - > Run - > All Tests in Solution运行测试.为什么VS不认为这些是有效的测试运行?

小智 8

根据Dror HelperAlex Duggleby,您需要将以下行添加到.csproj文件中:

<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
Run Code Online (Sandbox Code Playgroud)

在FileAlignment元素之后添加它,然后重新加载项目.它现在应该是一个MS Test项目,您可以在此项目的上下文中获得MS Test功能.Guids意味着:

  • {3AC096D0-A1C2-E12C-1390-A8335801FDAB} - 测试项目
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C#类库


Tim*_*Dog 4

我必须将项目重新创建为 aTest Project而不仅仅是 a Class Library— 因为我已经开始使用 NUnit 和 SpecFlow 进行开发,所以我创建了一个普通类库来保存装饰了 NUnit 属性的规范。我以为我可以简单地更改此现有项目的 app.config 以指向 mstest 框架并停止使用 NUnit,但 VS2010 从未识别出这些测试,尽管 Specflow 的自定义工具正确创建了存根。

所以...我添加了一个新的Test Project解决方案,将所有规范代码移至该新项目,然后重新编译,并且 viola、VS2010 识别了测试。我确信它正在 .csproj 文件的 XML 中寻找 GUID,或者告诉它连接测试框架的东西,但我没有深入研究。

希望这对某人有帮助。