Breaking changes with SpecFlow 3.0

Supported test frameworks

We support the following test frameworks/runners:

  • SpecFlow+Runner >= 3.0

  • NUnit >= 3.10

  • MSTest V2 >= 1.3.2

  • xUnit >= 2.4.0

Unit Test Provider is configured via plugin

The unittestprovider is no longer configured in app.config, but using plugins for the various test frameworks.

It is therefore mandatory to use SpecRun.SpecFlow-3.0.0, SpecFlow.xUnit, SpecFlow.MsTest or SpecFlow.NUnit in your project to configure the unittestprovider.

GeneratorPlugins are configured with MSBuild

Generator plugins are no longer configured in app.config. To load a plugin, you have to add it to the SpecFlowGeneratorPlugins item group via MSBuild.

The easiest way is to package your Generator Plugin in a NuGet package and use the automatic import of the props and target files in them. A good example are the plugins for the different test frameworks.

For example, if we look at the xUnit Plugin:
The Generator Plugin is located at /Plugins/TechTalk.SpecFlow.xUnit.Generator.SpecFlowPlugin.

In the /Plugins/TechTalk.SpecFlow.xUnit.Generator.SpecFlowPlugin/build/SpecFlow.xUnit.props you can add your entry to the SpecFlowGeneratorPlugins ItemGroup. Be careful, because dependent on the version of MSBuild you use (Full Framework or .NET Core version), you have to put different assemblies in the ItemGroup. The best way to do this is in the /Plugins/TechTalk.SpecFlow.xUnit.Generator.SpecFlowPlugin/build/SpecFlow.xUnit.targets files. You can use the MSBuildRuntimeType property to decide which assembly you want to use.

RuntimePlugins are configured by References

Runtime plugins are also no longer configuredin app.config. SpecFlow loads now all files in the folder of the test assembly and in the current working directory that end with .SpecFlowPlugin.dll.

Because .NET Core doesn’t copy references to the target directory, you have to add it to the None ItemGroup and set its CopyToOutputDirectory to PreserveNewest.

You have to do the same decitions as with the generator plugins

specflow.exe is gone

The specflow.exe was removed.
To generate the code-behind files, please use the SpecFlow.Tools.MsBuild.Generation NuGet package.

Reports were removed from the main code-base and aren’t currently available for SpecFlow 3.0. For details why we did it and where to find the extracted code is written in GitHub Issue https://github.com/techtalk/SpecFlow/issues/1036

Configuration app.config/specflow.json

Configuring SpecFlow via app.config is only available when you are using the Full Framework. If you are using .NET Core, you have to use the new specflow.json configuration file.