I cannot get specflow's code behind files to r

2020-07-18 06:15发布

When I edit a specflow feature file test, it doesn't update the code-behind file. When I try to manually regenerate the code-behind files by right-clicking the project and choosing 'Regenerate Feature Files' I get an error:

Error: cannot find custom tool 'specflowsinglefilegenerator' on this system

I've discovered that this usually means I don't have Specflow Extention installed. However, when I look in Extensions and Update in Visual studio I can see that 'Specflow for Visual Studio 2017' is installed.

If anyone knows what I can do that would be very helpful. This started when I re-cloned the repository into a new folder.

I have also tried clean and rebuild. Closing visual studio. Uninstalling and reinstalling Specflow Extention. Switching from visual studio from 2019 to 2017. Restarting my computer. Updating specflow. Deleting the specflow cache file and forcing the files to regenerate. I still have no changes to the code-behind file.

3条回答
等我变得足够好
2楼-- · 2020-07-18 06:42

In Visual studio, I chose: Tools > Options > Specflow. Then set Enable SpecFlowSingleFileGenerator Custom Tool to True.

This is a legacy setting, however, and I want to try and find a way to use MSBuild.

查看更多
放我归山
3楼-- · 2020-07-18 06:52

I had the same issue . And when I upgraded my specflow to 3.0.213 , feature.cs and tests were not generated. Then I used this MSBUild example with latest specflow to generate feature.cs and tests in test explorer. It uses MSTest as test runner.

查看更多
老娘就宠你
4楼-- · 2020-07-18 06:54

These are the steps I had to take to switch from using the old, 'specflowsinglefilegenerator', to generate my *.feature.cs files to having them autoupdate whenever I build the test project.

The process is described on Specflow's website, but pictures help in understanding the process.

  1. Remove 'specflowsinglefilegenerator' custom tool reference from all of your *.feature files (Before...) Before Change (After...) After change
  2. Delete the current *.feature.cs files which correspond to your *.feature files Delete *.feature.cs files
  3. Upgrade Specflow to 3.0.188 at least. the below is working for me. I am using NUnit for my test framework. NUnit3TestAdapter is needed for MS Test Explorer to recognize the tests. (The must haves in the below are: NUnit, NUnit3TestAdapter, Specflow, Selenium.Webdriver), Selenium.Support, enter image description hereenter image description here enter image description here
  4. Add the SpecFlow.Tools.MsBuild.Generation NuGet package to your project. This package is used to generate SpecFlow’s code-behind files.
  5. Add a specflow.json file to the project which contains your specflow feature files (*.feature) enter image description here enter image description here
  6. Now try rebuilding your solution. On rebuild your *.feature.cs files should get auto-generated.
查看更多
登录 后发表回答