Friday, January 14, 2011

Visual Studio Code Kata Project Template

I just attended CodeMash, and I was really impressed by the pre-compiler all-day session "Software Craftsmanship" by Steve Smith (@ardalis) and Brendan Enrick (@brendoneus). During the session, we did several coding katas. The process for each kata was the same: start by writing a single test, then, as simply as possible, make the test pass. For example, don't do any logic, just return the expected result for the test. Then write another test, and, again, as simply as possible, make it (and the other one) pass. Continue until all use cases have corresponding tests, and all tests pass. This was probably my favorite session at CodeMash: I've known what TDD was in an abstract way, but until now, I didn't "get" it. Kudos to Steve and Branden.

However, there was one thing that slightly annoyed me during this session: when we started a new kata, I first had to create a new project/solution in Visual Studio (a class library), then delete Class1.cs, then add a reference to NUnit, then add a new class (the one that performs the kata), then add another class (the test class), and finally, decorate the test class with [TestFixture]. After all of this, I was ready to start.

I am far too lazy to go through all of these steps for each kata. So I created a Visual Studio project template to handle these routine, boring steps for me.

This was my first attempt at creating a VS project templat, so there was some fumbling around. I googled around and found these two MSDN articles: How to: Create Project Templates and Template Parameters. These two articles got me most of the way there.

After creating a tedious kata project as described above, I used Visual Studio's Export Template (File > Export Template...). After extracting the resulting .zip file, I hand modified the two .cs files, the .vstemplate, and the .csproj file so that the name of the project would be used for the kata and kata test classes. I then re-zipped the files and copied the .zip to the Visual Studio templates directory (located at C:\Users\<UserName>\Documents\Visual Studio 2010\Templates\ProjectTemplates for VS 2010 on Windows 7).

That's it! Now, when I get the urge to do a code kata, I can get started in seconds instead of minutes.

Kata Template.zip

EDIT: I've made the template version-agnostic for NUnit (it had been looking for a specific version of NUnit). This change should make usable for any version of NUnit. However, this will probably cause problems for those who have multiple versions of NUnit installed. In that case, unzip the template and edit KataProject.csproj. Change the NUnit reference to point to the version that you need. Rezip the files and put it in the ProjectTemplates directory and you should be good to go.