是否可以“强制”为specflow功能文件重新生成步骤定义?我创建了此功能文件,但无法生成所有步骤。我收到一条消息,说明所有步骤已经绑定但是当我运行测试时,我得到一个错误,相同的步骤没有绑定。我已经清除了所有内容并重新创建了功能和步骤定义,但现在我无法生成所有步骤,因为specflow表示它们已被绑定。
SpecFlow在Temp文件夹中创建一个.cache文件,该文件包含这些绑定以加快速度。如果该文件失败,您可以将其删除:
如果这样做,SpecFlow需要一点时间来重新生成绑定。在此之前,如果右键单击某个步骤并选择“转到步骤定义”,Visual Studio将回复“步骤绑定仍在分析中。请稍候”。
我最常用于相反的情况,其中SpecFlow显示即使存在步骤也没有任何约束。但我认为它也可能适合你的情况。
另一个检查愚弄我的是你让待处理的占位符代码到位(opps):
/force
将测试标记为未实现。
右键单击.feature文件,然后选择“运行自定义工具”。这将重新运行SpecFlowSingleFileGenerator,它会在您选择的测试框架中生成代码隐藏。
<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文件
*.feature.cs
添加到.gitignore如果您使用的是SpecFlow plugin in Visual Studio,则可以看到哪些行具有绑定,而不是由于突出显示而没有绑定的行。此外,您还可以按F12转到具有Bindings的项目,生成可以粘贴在不存在的位置的绑定。
另外,我没有看到如上所述的一次性生成所有步骤的过程。说实话,这似乎有点反直觉,因为SpecFlow已经特别具有警告条件,以确定何时不存在这些步骤。
我遇到了同样的问题。重新启动Visual Studio将完成工作 - SpecFlow正在某处缓存绑定。
对我来说这看起来像个错误。可以通过移动生成的步骤类来复制它。我相信当您单击“生成步骤定义”时,引擎会点击缓存并且不会检查实际文件。
我在一个简单的简单dll项目中使用qazxsw poi在Visual Studio 2013上测试它。
重启VS很麻烦,特别是如果你有大项目。
我们更改了specflow插件的代码(SpecFlow plugin)。添加了重新初始化范围的命令(请参阅方法EnsureInitialization)并清除chached文件。
现在我们只需在更改绑定时单击按钮。
如果您遇到Specflow绑定问题,例如:
并重新启动Visual Studio或重新生成绑定不起作用,然后SpecFlow https://github.com/techtalk/SpecFlow为Visual Studio 2013和2015提供了各种解决方案。
您可以使用SpecFlow提供的工具Troubleshooting Visual Studio Integration重新生成所有要素文件测试类。
假设SpecFlow已经通过NuGet安装并且位于相对于当前目录的specflow.exe目录中,您可以在终端中运行命令
./packages
这将重新生成所有要素文件单元测试。如链接页面所述,您可以添加.\packages\SpecFlow.X.Y.Z\tools\specflow.exe generateall path\to\myfile.csproj
标志以强制重新生成所有测试。
我不得不重启VS,它对我有用。不需要删除任何临时文件或其他任何东西。
是的,它有点不方便,但我想的所有邪恶中的较小者。