代码之家  ›  专栏  ›  技术社区  ›  TimDog

如何让VS2010识别由specFlow生成的MSTest?

  •  7
  • TimDog  · 技术社区  · 14 年前

    我已经通过在我的“specs”类库的app.config中这样指定来配置specFlow以针对mstest框架(而不是nunit):

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

    因此,一旦它就位,我就可以看到我的测试夹具是由specFlow定制工具正确生成的,具有正确的testclassattribute()和方法等:

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

    specs类将生成,但现在我无法使用测试运行测试-->运行-->在Vista 64框上的Visual Studio 2010中解决方案中的所有测试。为什么vs不将这些识别为要运行的有效测试?

    3 回复  |  直到 12 年前
        1
  •  8
  •   Kristian Kristensen    13 年前

    按照 Dror Helper Alex Duggleby 您将要在.csproj文件中添加以下行:

    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    

    在fileAlignment元素后添加它,然后重新加载项目。它现在应该是一个MS测试项目,您可以在这个项目的上下文中获得MS测试功能。GUID的意思是:

    • 3AC096D0-A1C2-E12C-1390-A8335801FDAB-测试项目
    • fae04ec0-301f-11d3-bf4b-00c04f79efbc-c类库
        2
  •  4
  •   TimDog    14 年前

    我不得不把这个项目重新设计成 Test Project 不仅仅是一个 Class Library --因为我是从nunit和specFlow开始开发的,所以我创建了一个香草类库来保存我的spec,它具有nunit属性。我想我可以简单地将这个现有项目的app.config更改为指向mstest框架并停止使用nunit,但是vs2010从未识别出这些测试,尽管specflow的定制工具正确地创建了存根。

    所以…我增加了一个新的 测试项目 在我的解决方案中,将我所有的规范代码移动到那个新项目中,然后重新编译,Viola、VS2010识别出这些测试。我确信在.csproj文件的XML中有一个guid,或者是一些告诉它连接测试框架的东西,但是我没有深入研究。

    希望这能帮助别人。

        3
  •  -1
  •   78lro    12 年前

    要将类库项目模板更改为测试项目,请修改.csproj并添加以下行:

    <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
    

    到第一个属性组元素:

    <PropertyGroup>
        <ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>