是否有可能“强制”重新生成一个specflow特征文件的步骤定义?我创建了此功能文件,但无法生成所有步骤。我收到一条消息,说明所有步骤已经绑定,但是当我运行测试时,出现相同步骤未绑定的错误。我已清除所有内容并重新创建了功能和步骤定义,但现在我无法生成所有步骤,因为specflow表示它们已被绑定。Specflow错误:强制重新生成步骤可能吗?
回答
如果您使用的是SpecFlow plugin in Visual Studio,您可以看到哪些行具有绑定,而不是由于突出显示而不是那些行。此外,您还可以按F12转到具有绑定的项目,生成一个可以粘贴到不存在绑定的绑定。
另外我还没有看到这个过程如上所述一次性生成所有步骤。说实话,这似乎有点反直觉,因为SpecFlow已经具体警告条件,当步骤不存在。
右键单击.feature文件并选择“运行自定义工具”。这将重新运行在您选择的测试框架中生成代码隐藏的SpecFlowSingleFileGenerator。
SpecFlow(1.9.0)的最新版本似乎也检测到过时的代码生成并询问您是否要重新生成,这很好! –
我试过了 - 如果后面的代码移动到上层文件夹中,则没有任何反应。 (带SpecFlow插件和SpecFlow 1.9.0.7的Visual Studio 2013)。我认为某种错误。重新启动VS帮助。 –
没有工作。我的问题是绑定缓存是值得信赖的来源,但是是错误的。必须按照Kyralessa的6个步骤删除缓存。 –
我遇到了同样的问题。重新启动Visual Studio将完成工作 - SpecFlow正在缓存某处的绑定。
这看起来像是一个bug。可以通过移动生成的步骤类来复制它。我相信,当您单击“生成步骤定义”时,引擎会触发缓存并且不会检查实际文件。
我在一个简单的dll项目中使用SpecFlow plugin在Visual Sudio 2013上测试了这个。
SpecFlow在Temp文件夹中创建一个.cache文件,该文件保存这些绑定以加快速度。如果该文件变得不正常了,你可以删除:
- 退出的Visual Studio。
- 打开Windows资源管理器。
- 在地址栏中,输入%TEMP%,然后按Enter键进入您的临时文件夹。
- 查找名称以.cache扩展名为“specflow-stepmap-YourProjectName”开头的文件。
- 删除这些文件。
- 再次启动Visual Studio。
如果你这样做,SpecFlow需要一点时间来重新生成绑定。在此之前,如果右键单击某个步骤并选择“转到步骤定义”,Visual Studio将回复“步骤绑定仍在分析中,请稍候”。
我最常用的是相反的情况,其中SpecFlow显示没有任何被绑定,即使这些步骤存在。但我认为它也可能适用于你的情况。
重新启动VS很麻烦,特别是如果你有大项目。
我们更改了specflow插件的代码(https://github.com/techtalk/SpecFlow)。 添加了重新启动作用域的命令(请参阅方法EnsureInitialization)并清除chached文件。
现在我们只需在绑定被更改时单击按钮。
这个增强功能是发布还是将会是? – SayusiAndo
如果你一直有与Specflow绑定的问题,例如:
- 步骤并不认可
- 没有绑定可以发现
并重新启动Visual Studio或再生的绑定不起作用,那么SpecFlow Troubleshooting Visual Studio Integration针对Visual Studio 2013和2015具有各种解决方案。
- 关闭Visual Studio的
- 在打开记事本等++
- 一个文本编辑器中的.csproj假设你正在使用SpecFlow 2.2.0
- 假设你的特点是在./Features
- 在
<Project>
区你应该看到一些<Import>
命令,补充一点:
<Import Project="..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.targets" Condition="Exists('..\packages\SpecFlow.2.2.0\tools\TechTalk.SpecFlow.targets')" />
<!--<ItemGroup>
-->
<!-- include all feature files from the folder "FeatureFiles" -->
<!--
<None Include="Features\**\*.feature" />
</ItemGroup>
<Target Name="AfterUpdateFeatureFilesInProject">
-->
<!-- include any files that specflow generated into the compilation of the project -->
<!--
<ItemGroup>
<Compile Include="@(SpecFlowGeneratedFiles)" />
</ItemGroup>
</Target>-->
将此片段插入您的.csproj的<Project></Project>
部分内,如果可以的话,请在其他<Import>
s旁边插入。该评论的部分是很重要的,它会重新生成.feature.cs文件
- 重新打开Visual Studio的
- 每次你建立的文件将被renegerated
- 的.feature.cs您可能需要添加
*.feature.cs
此后
您可以使用SpecFlow提供的工具specflow.exe重新生成所有功能文件测试类。
假设SpecFlow已经通过的NuGet安装的,是相对于当前目录的./packages
目录中,可以运行,在终端上,命令
.\packages\SpecFlow.X.Y.Z\tools\specflow.exe generateall path\to\myfile.csproj
这将重新生成所有特征文件的单元测试。如链接页面所述,您可以添加/force
标志来强制重新生成所有测试。
- 1. Specflow并生成步骤
- 2. 重新生成specflow中场景的步骤
- 3. 在specflow中重复步骤
- 4. 生成不正确方法的SpecFlow步骤生成方案
- 5. Specflow:对于步骤
- 6. SpecFlow的功能范围步骤定义?
- 7. Specflow - 场景大纲不生成示例步骤
- 8. Specflow没有生成正确的步骤定义
- 9. 查找孤儿SpecFlow步骤
- 10. 如何使SpecFlow VS自动完成尊重步骤范围?
- 11. SpecFlow可重复使用的步骤定义
- 12. Specflow向现有功能文件添加新步骤
- 13. 强制WinForms重新生成.designer.cs文件
- 14. Specflow用的await步骤异步API
- 15. SpecFlow自动生成的StepDefinition文件,有可能吗?
- 16. 我可以强制C预处理器生成新行吗?
- 17. 我可以在不运行测试的情况下获得SpecFlow生成缺失步骤定义的列表吗?
- 18. 黄瓜步骤上错误的步骤
- 19. 导航到Specflow步骤从步骤定义
- 20. Specflow中的继承测试步骤导致模糊步骤
- 21. Specflow忽略在F#步骤汇编中的步骤
- 22. Specflow-run步骤多次 - 只有当步骤
- 23. 生成实体的步骤
- 24. 你小步骤重构吗?
- 25. “重放”重新创建错误所需的步骤
- 26. AngularJS:jQuery步骤错误
- 27. 可能的错误重新
- 28. specflow的动态步骤定义匹配
- 29. 默认值Specflow步骤定义
- 30. 如何识别Specflow的后台步骤?
请将正确的答案标记为已解决... Marcus的答案完全符合您要求的 – Heliac
@Heliac,有时甚至重新运行自定义工具也无法解决问题。我在下面提供了一个备用,更可靠的解决方案。 –