Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

I cannot get specflow's code behind files to regenerate

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.

like image 634
Megan Styles Avatar asked Aug 28 '19 03:08

Megan Styles


2 Answers

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.

like image 185
Megan Styles Avatar answered Sep 19 '22 19:09

Megan Styles


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.
like image 32
Fractal Avatar answered Sep 20 '22 19:09

Fractal