Gáspár Nagy on software

coach, trainer and bdd addict, creator of SpecFlow; owner of Spec Solutions

SpecFlow 1.6 and after…

by Gáspár on April 5, 2011

logoAfter a lot of work we have finally released SpecFlow 1.6. This was an important milestone of SpecFlow for several reasons:

  • Altogether 11 people have contributed (in compare to 1.5, where “only” 6)
  • Effective usage of the public build server, for the contribution and for preliminary results
  • NuGet package published together with the release

There are many smaller improvements and fixes, but the most important new features are these (see the announcement and the detailed change log for further details):

  • Visual Studio 2010 integration improvements (improved intellisense, go to binding, automatic table formatting)
  • Windows Phone 7 support
  • Assist improvements (dynamic getter for ScenarioContext,
    Table.FillInstance())
  • Step argument transformation for tables and multi-line text
    arguments
  • Integration with Gherkin parser v2.3.5

I have posted recently about the VS2010 improvements and automatic table formatting. If you experience any problems with this features, you can enable SpecFlow debug tracing or disable the problematic features in Tools / Options / SpecFlow. (The trace is emitted to the output window.)

And what will come after 1.6? We have of course several ideas how to improve SpecFlow. Here is a (probably incomplete) list of directions we want to go:

1. Using the generator from the project’s lib folder

The generator interface have been prepared now for running from a different AppDomain, so we want to change the VS2010 integration in a way, that it detects the generator in the project’s lib folder (that was placed there through NuGet for example) and perform the test generation with that. The benefit: the VS integration would be more independent of the runtime and the tools. You can then decide project-by-project when to upgrade to a newer SpecFlow release. Less problems with breaking changes – more frequent releases.

2. Share VS2010 improvements with MonoDevelop

The core infrastructure we use for intellisense and navigation is Visual Studio independent, so we want to reuse that also for the MonoDevelop integration. For that the implementation has to be restructured a bit and the VS-independent parts have to be extracted. We do this together with Dale Ragan, who is the master of the SpecFlow Mono/MonoDevelop integration.

On the CukeUp! I had a good discussion with Aslak Hellesøy about standardizing the data gathered for the autocomplete (e.g. in a json format). This data could be generated build-time and used for other tools in the Cucumber-family providing rich editing experiences. Interesting, isn’t it? Let’s see.

3. Remove duplicated binding-match logic

Currently the logic that decides whether a scenario step matches for a binding is duplicated in the runtime and in the VS integration. This should be cleaned up.

As a part of this, we will establish a dependency between the generator and the runtime (generator depends on runtime), so the file-based sharing can be eliminated.

4. Better dependency handling

I have started to setup a better DI solution for SpecFlow, for

  • better support for parallel scenarios (eliminate static stuff)
  • better extensibility – being able to set/override any dependencies from the config file
  • better support for unit testing

Currently I’m using a mini DI framework, that can be embedded as a single source file (called MiniDi). This is a huge refactoring, so I try to do it step-by-step.

5. Runtime platform improvements

We do want to further improve the support for alternative platform runtimes, like Silverlight or Windows Phone 7 with the help of the contributors. Currently Matt Ellis is working on the asynchronous Silverlight support.

6. Visual Studio 2010 integration improvements

There are a lot of ideas still to improve the editing and navigation experience, like showing the binding status of a step, commenting out scenario blocks or running the focused scenarios from context menu.

7. Documentation, documentation, documentation

Yes, I know. This is something to be improved. But I hope that by using the github wiki it will be easier to complete the docs and keep it up-to-date.

Like before, we are collecting feedback about SpecFlow also through a (new) survey – please fill it in (anonymously or with your name) to help our work.

Once again, thanks to the contributors for their great work in SpecFlow. Also thanks to TechTalk for sponsoring the development and the infrastructure of this open-source project.

imageAt TechTalk we are developing another product, SpecLog, that supports managing your requirements in agile projects. Please have a look at our website: http://www.speclog.net/.

4 thoughts on “SpecFlow 1.6 and after…