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
- matthiaslischka
- bollhals
- nvborisenko
- gw79
- 304NotModified
- scasteran
- dnperfors
- beaubgosse
- Artur-Laskowski
- dannyBies
- goblinmaks
- DavidZidar
- zplan
- nerrierr
- idg10
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:
- Allow the use of custom subclasses of StepDefinitionBaseAttribute.
- Be able to get the arguments of the current executed Scenario Outline example – https://github.com/SpecFlowOSS/SpecFlow/pull/1988
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
andtable.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:
- Fix BoDi.ObjectContainerException when retrying a failed test running in parallel – https://github.com/SpecFlowOSS/SpecFlow/issues/1857
- Fix BeforeTestRun hook is executed multiple times when running in parallel- https://github.com/SpecFlowOSS/SpecFlow/issues/1917
- Report: generate empty reports
- Fix console output on Linux and Mac
- Display activation result in the logs
- Executing in Bamboo build agents works