Click here to Skip to main content
Click here to Skip to main content

Quick tip: How to do TDD/BDD and debug unit tests with Visual Studio Express editions

, 9 Nov 2011
Rate this:
Please Sign up or sign in to vote.
IntroductionThis 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.PrerequisitesA Visual Studio Express editionAutoTest.NetNugetHow do you do it ?Open your project in Visual Studio ExpressAdd a new c

Introduction

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.

Prerequisites

How do you do it ?

  1. Open your project in Visual Studio Express
  2. Add a new class project, name it [Project].Specs
  3. 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.
  4. Start AutoTest.Net, after you configured it for the testlib (adjust AutoTest.config file for the correct testrunner)
  5. Start writing your specs
  6. Every time you save a file, your project is compiled and your tests are ran

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:
  1. Right click on your spec project, and choose "Unload project"
  2. Right click the unloaded project and choose "edit [xxx].Specs.csproj", you will see an XML
  3. Find the matching PropertyGroup for your configuration (usually <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> )?
  4. 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>
  5. Save and close the .csproj file
  6. Right click on the project and reload it
  7. Set a breakpoint in the test you want to debug
  8. Right click again on the project, and.....
  9. ... you can now choose "Debug this project"  !!!

Final words

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.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)

About the Author

Tom Janssens
Founder Core bvba
Belgium Belgium
Tom Janssens, owner of Core, a software and consultancy company.
Father of two sons named Quinten & Matisse, and married to a beautiful woman named Liesbeth.
 
Blog: http://tojans.me
Github: http://github.com/ToJans
Twitter: http://twitter.com/ToJans
LinkedIn: http://www.linkedin.com/in/tomjanssens

Comments and Discussions

 
QuestionIs this any use for unmanaged C++? PinmemberStefan_Lang9-Nov-11 22:39 
AnswerRe: Is this any use for unmanaged C++? PinmemberTom Janssens9-Nov-11 23:22 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Mobile
Web03 | 2.8.140721.1 | Last Updated 10 Nov 2011
Article Copyright 2011 by Tom Janssens
Everything else Copyright © CodeProject, 1999-2014
Terms of Service
Layout: fixed | fluid