SpecFlow realizes the concept of executable specifications with the following artifacts:

There are two driving intentions behind SpecFlow:

  • We believe in the simplicity of plain-text feature specifications
  • We want to provide a seamless developer experience by leveraging existing infrastructure and frictionless integration into the .Net platform

From these intentions we derived the following design decisions:

  • We strive to be fully compatible with the Gherkin language
  • We allow bindings (step definitions) in any .NET language
  • We use existing unit-testing frameworks as the runtime for scenario execution

Realization:

SpecFlow converts the feature files into unit test fixture classes. The test inside the test fixture classes are corresponding to the scenarios you have in the feature file, and contain call-outs to the step definitions

SpecFlow currently consists of three parts:

  • feature file converter into test fixtures (integrated into Visual Studio through a single-file generator)
  • runtime framework (handles, step bindings, events and tracing)
  • Integration with UnitTest-Framework (NUnit, MSTest, xUnit.Net, MbUnit)