SpecFlow错误地使用NUnit

问题描述:

我刚刚(今天)尝试SpecFlow首次。我在VS2010 Pro中创建一个新的类库并添加一个SpecFlow特征定义文件。SpecFlow错误地使用NUnit

事情是,整合似乎没有正常工作,与各种不同的错误。我选择了MsTest作为测试运行者,因为我不会为调用NUnit而烦恼(我想长期使用NUnit,但目前我只想获得一些BDD代码)。然而,生成的代码文件继续引用NUnit--这显然是错误的,因为我刚刚告诉SpecFlow使用MsTest运行。我已经尽我所能地再次调用代码生成,包括使用Tools> Options> SpecFlow中选择的MsTest选项创建一个全新的类库项目。

如果我将测试运行器字段设置为“自动”并右键单击某个功能文件,然后选择“运行SpecFlow方案”,我收到一条错误消息“无法找到匹配的测试运行器”。

如果我不是改变测试运行领域MSTest的,我得到做同样的事情不同的错误消息 - “未设置为一个对象的实例对象参考”。我对此并不感到惊讶,因为它仍然试图运行NUnit测试,即使我明确要求MsTest,但显然它不应该nullref并将其呈现给用户。

我在做什么错?文档没有帮助,就我所知,没有常见问题解答。

编辑#1:我确定,我正在寻找的实际设置使用App.Config使用领域<unitTestProvider name="MsTest" />提供。我可以看到发生了什么 - Visual Studio选项菜单中的字段似乎没有修改您当前正在处理的项目。事情是,这使得它看起来像是领域根本没有做任何事情。我现在已经说服SpecFlow生成MsTest类并使用MSTest runner运行。

所以现在问题变形为一个稍微不同的问题:工具>选项> SpecFlow>测试亚军工具字段做什么(如果有的话)?

我从来没有能够得到SpecFlow从Visual Studio权的工作,我花了一些时间做这个工作,但从未去任何地方。虽然我发现在Visual Studio 2010中设置NUnit的指令是these,我使用这个快捷方式来运行我的SpecFlow测试,效果很好。

总体而言,我们使用PowerShell来运行大量的测试,我可以纳入NUnit的命令行亚军和SpecFlow报告生成到一个脚本,我可以轻松运行。

+0

伟大的提示,谢谢!我立即设置了菜单按钮,因为它看起来非常有用,所以无论这种查询方式提供了一个方便的副作用。虽然对于SpecFlow感到羞耻,但看起来我并不是唯一一个能够做它应该做的事情的人。实际的产品工作,但VS整合不太正确。 –

+0

是的,我希望它更集成,但我现在确定。现在它的使用确实胜过我的好处。很高兴提示帮助! – MichaelF

+0

您是否运行过specflow安装程序,或者您是否使用NuGet将它添加到项目中?安装程序将安装所有集成组件,如Visual Studio集成,其中nuget安装只添加必要的引用。 –

随着VS2010正确的值是MsTest.2010不MSTEST的记录。更改你的app.config(对于测试程序集),它会正常工作(至少使用SpecFlow 1.8)

<?xml version="1.0" encoding="utf-8"?> 
<configuration> 
    <configSections> 
    <section name="specFlow" type="TechTalk.SpecFlow.Configuration.ConfigurationSectionHandler, TechTalk.SpecFlow" /> 
    </configSections> 
    <specFlow> 
     <unitTestProvider name="MsTest.2010" /> 
     <!-- For additional details on SpecFlow configuration options see https://github.com/techtalk/SpecFlow/wiki/Configuration --> 
    </specFlow> 
</configuration> 

回答最新的问题。什么是“工具>选项> SpecFlow> Test Runner工具”此设置控制实际运行测试的内容,而不会生成测试代码。如果它设置为auto,我相信它会查看App.config文件,在其中设置unitTestProvider以确定运行测试的最佳工具。通过同样的家伙,SpecFlow作出的alternaive测试转轮SpecRun http://www.specrun.com/

所以当你去运行测试将使用此选项。正如你已经发现的,虽然代码生成器使用配置文件来确定它应该生成什么类型​​的测试(mstest/nunit ..)

如果您运行specfow安装程序(https://github.com/downloads/techtalk/SpecFlow/SpecFlowSetup_v1.8.1.msi)以安装所有Visual Studio Intergration组件您更改它通常会提示的App.config文件以使用新提供程序重新生成功能。手动执行此操作的方法是右键单击功能并选择“运行自定义工具”

关于文档,您是否找到了git hub wiki? https://github.com/techtalk/SpecFlow/wiki/Documentation

我们使用ReSharper作为SpecFlow验收测试的参赛者;它运行良好,开箱即用。虽然ReSharper不是免费的,但它值得每一分钱...