SpecFlow错误地使用NUnit

Tom*_*m W 14 nunit specflow

我(今天)第一次尝试过SpecFlow.我正在玩VS2010 Pro中创建一个新的类库并添加一个SpecFlow功能定义文件.

事实上,集成似乎没有正常工作,具有各种不同的错误.我选择了MsTest作为测试运行器,因为我不能打扰调用NUnit(我想长期使用NUnit,但目前我只想让一些BDD代码工作).然而,生成的代码文件继续引用NUnit - 这显然是错误的,因为我刚刚告诉SpecFlow使用MsTest运行.我已经完成了我能想到的再次调用代码生成的所有内容,包括使用工具>选项> SpecFlow中选择的MsTest选项创建一个全新的类库项目.

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

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

我究竟做错了什么?文档没有帮助,据我所知,没有FAQ.

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

所以现在问题变成了一个稍微不同的问题:工具>选项> SpecFlow>测试运行工具字段有什么(如果有的话)?

Pet*_*nes 9

对于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>
Run Code Online (Sandbox Code Playgroud)


Rya*_*ham 7

回答你的最新问题.什么是"工具>选项> SpecFlow>测试运行器工具"设置,此设置控制实际运行测试的内容,而不是生成测试代码的内容.如果它设置为auto我相信它会查看App.config文件,你在其中设置了unitTestProvider以确定运行测试的最佳工具.与SpecFlow相同的人员制作的替代测试跑者是SpecRun http://www.specrun.com/

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

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

关于文档你有没有找到git hub wiki? https://github.com/techtalk/SpecFlow/wiki/Documentation


Mic*_*elF 1

我从来没能从 Visual Studio 中让 SpecFlow 正常工作,我花了一些时间研究它,但从来没有去过任何地方。尽管我找到了有关在 Visual Studio 2010 中设置 NUnit 的说明,并且我使用此快捷方式运行 SpecFlow 测试,效果良好。

总的来说,我们使用 PowerShell 运行大量测试,并且我能够将 NUnit 命令行运行程序和 SpecFlow 报告生成器合并到一个可以轻松运行的脚本中。