如何在Visual Studio 2010中运行SpecFlow测试?

41

尝试在全新的VS2010专业版中运行SpecFlow。创建了一个新的控制台应用程序,并添加了对NUnit和SpecFlow的引用。创建了一个SpecFlow功能。生成了带有默认模板代码的.feature文件。

现在我尝试运行此测试,但我不知道如何运行。当我右键单击项目(在顶层),鼠标下拉菜单中没有“运行测试”选项。是SpecFlow安装不正确,还是我缺少一些引用或其他需要安装的工具?


请添加VS扩展程序“nunit test adapter”,它将nunit测试放置在VS测试运行程序中。 - Brantley Blanchard
8个回答

82
如果您希望能够直接从Visual Studio 2010运行测试,而不需要任何其他工具或扩展,那么您应该配置SpecFlow使用MsTest作为其单元测试框架。在您的应用程序配置文件中可以通过以下方式完成:
  <configSections> 
    <section 
       name="specFlow" 
       type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow"/> 
  </configSections> 
  <specFlow> 
    <unitTestProvider name="MsTest" /> 
    <!--
        Use this if you're running VS2010
        <unitTestProvider name="MsTest.2010" />
    -->
  </specFlow> 

生成的代码后台文件中将包含MsTest测试,这些测试可以被Visual Studio识别并且可以使用内置的测试运行器运行。

完全不需要使用NUnit。


1
这是关于unitTestProvider及其可能的值的SpecFlow文档:https://github.com/techtalk/SpecFlow/wiki/Unit-test-providers。这份文档比这个答案更有可能保持最新(因为它是specflow文档,不是针对答案作者的意见):) - MushinNoShin

10

SpecFlow本身不提供Runner。


SpecFlow为常见的单元测试框架生成夹具。在SpecFlow 1.3中,支持NUnit(默认)、MSTest和xUnit.net(在App.config中配置)。

要运行这些夹具,您必须使用能够运行它们的Runner。

ReSharper是VisualStudio集成的非常好的测试Runner选项,但它并不免费。 ReSharper会在解决方案资源管理器中提供“运行单元测试”上下文菜单。

VisualStudio 集成的另一个选择是TestDriven.Net(也提供上下文菜单)。

对于NUnit,您还可以使用NUnit自带的Runner(有GUI-Runner和命令行Runner)。
对于MSTest,您可以使用本机VisualStudio集成来运行测试(但我认为有点笨拙)。
xUnit.net也带有其Runners,但我不熟悉它们。

此外,您可以使用MSBuild任务来运行这些夹具...


你可以添加链接到提到的工具,以便更容易找到它们。 - mfloryan

6

仅供更新此问题,在最新版本的SpecFlow中,您应该使用(使用MsTest.2010)

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

查看SpecFlow错误使用NUnit


4

4

有一件事让我出乎意料。我必须确保项目类型是测试项目。我需要卸载项目并将项目GUID更改为单元测试项目的GUID。一旦我这样做了,该项目中的SpecFlow(以及其他任何)测试就活跃起来了。


好的回答,我没有意识到我添加了错误的项目类型,但这帮助了我。 - Lester

3

使用NUnit (GUI)运行Specflow测试需要外部调用,或者可以安装TestDriven.net或Resharper来支持从Visual Studio内部运行测试。


2

我已经制作了一个视频,演示如何在VS2010中使用Specflow,视频链接在此


1
非常好的视频 - 从第24分钟开始直接学习如何使用SpecFlow和MsTest。配置文件在第29分钟出现。 - Volker von Einem

0
您也可以尝试使用 Visual Nunit,这是一个开源的 NUnit 测试运行器插件,适用于 Visual Studio 2008 和 2010。请使用 NuGet 获取它,更多信息请参见http://www.bubblecloud.org/visualnunit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接