Using FSpec with NCrunch

Published on January 07, 2015

If you have the excelent Visual Studio plugin, NCrunch, you can have it run FSpec tests as you are writing your code - with some limitations, unfortunately.

The primary limitation is that NCrunch sees the entire test suite as one test. Therefore, it is not able to:

  • Display specifically which test(s) have failed, only if the entire suite is a success or not.
  • Only execute the tests that are specifically affected by a change in code, thus optimizing execution time.

But if your tests are fast, it will do its job for a normal red/green/refactor cycle.

How does it work

The integration is based on the fact that MbUnit supports "Dynamic Test Factories", a class that can generate unit tests at run time, as instances of a TestCase class. And NCrunch has support for MbUnit (make sure that it is enabled)

FSpec provides a wrapper that can inspect an FSpec test suite and exposes it as a dynamic test factory.

But in order to be able to display the test suite in a hierarchical form, and execute a single test case, this structure has to be known at compile time - and for dynamic test factories, this is not the case; thus the limitations.

How to use it

In your spec assembly, add the FSpec.MbUnitWrapper NuGet package. Then add the following piece of code:

[<MbUnit.Framework.TestFixtureAttribute>]
type Wrapper() =
    inherit FSpec.MbUnitWrapper.MbUnitWrapperBase()

And that's it. If you are running the latest NCrunch, and have MbUnit enabled in NCrunch, you should start seeing red/green dots for your code.

Previous: Liberate yourself from VS project filesNext: FSpec goes 0.1 (with Foq support)