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报告生成到一个脚本,我可以轻松运行。
随着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不是免费的,但它值得每一分钱...
伟大的提示,谢谢!我立即设置了菜单按钮,因为它看起来非常有用,所以无论这种查询方式提供了一个方便的副作用。虽然对于SpecFlow感到羞耻,但看起来我并不是唯一一个能够做它应该做的事情的人。实际的产品工作,但VS整合不太正确。 –
是的,我希望它更集成,但我现在确定。现在它的使用确实胜过我的好处。很高兴提示帮助! – MichaelF
您是否运行过specflow安装程序,或者您是否使用NuGet将它添加到项目中?安装程序将安装所有集成组件,如Visual Studio集成,其中nuget安装只添加必要的引用。 –