我(今天)第一次尝试过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>测试运行工具字段有什么(如果有的话)?
对于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)
回答你的最新问题.什么是"工具>选项> 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
| 归档时间: |
|
| 查看次数: |
11806 次 |
| 最近记录: |