Thursday, November 3, 2011

Spec Flow is What????

SpecFlow aims at bridging the communication gap between domain experts and developers by binding business readable behavior specifications to the underlying implementation.

GWT describes the current context of the scenario (Given), the actions taken as a part of the test (When) and the expected, observable results (Then).

image: The Behavior-Driven Development Cycle

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)