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