This article will show you how you can do TDD/BDD with Visual Studio Express editions. While most people say it is not possible, it is actually pretty easy.
How Do You Do It ?
- Open your project in Visual Studio Express
- Add a new class project, name it
- Add a reference to the testlib you want to use with Nuget (Right click on the project references and choose "Manage Nuget Packages") - I use MSpec a lot.
- Start AutoTest.Net, after you configured it for the testlib (adjust AutoTest.config file for the correct testrunner)
- Start writing your specs
- Every time you save a file, your project is compiled and your tests are run
That is all you need; pretty simple actually, is it not?
There is also the possibility to have notifications and stuff like that, but I currently do not use them.
But Wait, What If I Need to Debug a Test?
As I sometimes only do integration tests, I need the ability to debug these tests. But there is no option to do this in the Express editions, or is there?
Well, this took me a bit longer to find out, but once you know how to do this, it is pretty easy:
- Right click on your spec project, and choose "Unload project"
- Right click the unloaded project and choose "edit [xxx].Specs.csproj", you will see an XML
- Find the matching
PropertyGroup for your configuration (usually
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">)?
- Add the following child items in the property group (I used mspec as an example here):
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
- Save and close the .csproj file
- Right click on the project and reload it
- Set a breakpoint in the test you want to debug
- Right click again on the project, and.....
- ... you can now choose "Debug this project" !!!
While this approach takes a few minutes to setup, it is definitely not that hard to do. In fact, I just copy the test EXEs and settings over from another project whenever I need to do it a second time on the same machine. At least this approach will allow you to do proper TDD/BDD with the Express editions of Visual Studio.