SpecFlow & SpecFlow+Runner 3.3 Are Available!

Yes, you are reading correctly. We are jumping directly from SpecFlow 3.1 to SpecFlow 3.3. This is to make it easier to understand, which version of SpecFlow works with which version of SpecFlow+ Runner. More details can be found here.

What is new?

This release of SpecFlow and SpecFlow+ Runner combines a lot of small and medium fixes, features, and performance increases. For a complete list have a look at the detailed changelog at the end.

There were two bigger changes, that made it necessary to increase the version number to 3.3.

Support for .NET Core SDK 3.1.200 and later

Because of some behavior changes in the .NET Core SDK 3.1.200 and later, we had to made adjustments to our Assembly loading logic, that SpecFlow is working with it again.

Supported .NET Versions

Starting with this version, we are supporting .NET Framework 4.6.1 and later and are following the Microsoft .NET Core Support policy. You can read more about this in this blog post.

This means, we support:

  • >= .NET Framework 4.6.1
  • .NET Core 2.1
  • .NET Core 3.1

Thanks to all our amazing contributors!

This release would not be possible without you.

These are contributors to SpecFlow since the last 3.1 release

If you didn’t already, you can get some stickers from us here (When we are back in the office, because there are all our stickers stored).

Detailed Changelog

SpecFlow

Features:

API Changes:

  • Now allows override of method categories in NUnit to allow for plugin development on this function
  • (breaking) tableRow.GetEnum(..) has now a class contraint on T
  • (breaking) tableRow.GetTheEnumValue(..) has now a class contraint on T
  • added tableRow.GetDiscreteEnum
  • TechTalk.SpecFlow.Assist.ValueRetrievers.* public classes have undergone some refactoring. IValueRetriever interface remains unchanged.

Changes:

  • Performance and memory improvements for table.CreateSet and table.CreateInstance
  • Improved performance of ValueRetrievers
  • Removed Nullable*ValueRetriever as nullability is now handled by the *ValueRetriever directly.
  • Changed all specflow.org hyperlinks to https (docs, generated code, packages)
  • Changed minimal .NET Framework version from .NET 4.5 to .NET 4.6.1
  • Changed minimal .NET Framework version of the Generator plugins and the SpecFlow.Tools.MSBuild.Generation package from .NET 4.7.1 to .NET 4.6.1
  • Downgrade to be able to use xUnit 2.4.0 (because VS Templates are using this version)

Fixes:

  • Empty value for nullable enum should not throw an exception
  • RegEx performance fix in TEHelpers (Table column name validation)
  • Adjust assembly loading of Generator plugins to changed behavior in .NET Core SDK 3.1.200 and later – https://github.com/SpecFlowOSS/SpecFlow/issues/1912
  • add auto-generated comment for StyleCop to ignore the Assemblyhook files

Fixes for Development:

  • Changed unit tests to ignore custom user overrides to data formatting in en-US locale
  • Some errors could randomly happen when running tests in parallel

SpecFlow+ Runner

Features:

  • Support for SpecFlow 3.3

Bugfixes: