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 [Project].Specs
- 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 ran
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 ?
- 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’ “> …. <StartAction>Program</StartAction> <StartProgram>C:\Users\Public\Documents\OudePc\Projecten\Org.NerdBeers\src\Org.NerdBeers\packages\Machine.Specifications.0.4.24.0\tools\mspec-x86-clr4.exe</StartProgram> <StartArguments>Org.Nerdbeers.specs.dll</StartArguments> <StartWorkingDirectory>C:\Users\Public\Documents\OudePc\Projecten\Org.NerdBeers\src\Org.NerdBeers\Org.NerdBeers.Specs\bin\Debug</StartWorkingDirectory> </PropertyGroup>
- 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 definetely 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.