是否有可能「強制」重新生成一個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,有時甚至重新運行自定義工具也無法解決問題。我在下面提供了一個備用,更可靠的解決方案。 –