7

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

<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()]
...

规范类构建,但现在我无法在我的 vista 64 盒子上使用测试 --> 运行 --> 解决方案中的所有测试在 Visual Studio 2010 中运行测试。为什么 VS 不将这些识别为有效的测试来运行?

4

3 回答 3

8

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

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

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

  • {3AC096D0-A1C2-E12C-1390-A8335801FDAB} - 测试项目
  • {FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} - C# 类库
于 2011-01-20T13:44:17.137 回答
4

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

所以......我Test Project在我的解决方案中添加了一个新的,将我所有的规范代码移到那个新项目中,然后重新编译,中提琴,VS2010 识别测试。我确定它在 .csproj 文件的 XML 中寻找一个 GUID,或者告诉它连接测试框架的东西,但我没有深入挖掘。

希望这可以帮助某人。

于 2010-08-12T17:55:25.780 回答
-1

要将您的类库项目模板更改为测试项目,请修改 .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>
于 2012-11-13T11:18:28.203 回答