Rebooting My Development Environment
A few days ago, I started development on a new project and I am using it to learn some new things. I have been working with Visual Studio Team System 2008 + ReSharper exclusively for awhile now, and I want to try some other tools.
Even though learning some new tools and coding practices was my goal in the beginning, I found myself absolutely paralyzed by the number of choices for every tool along the way. I still don’t think I have an ideal setup, but I’’ tell you what I have experienced so far.
Unit Test Framework
I considered these alternatives:
I figured the tooling support for NUnit would be the best given its maturity. The test runner in ReSharper supports it out of the box, so what could go wrong?
UnitTest framework – No winner, see below
I love VSTS code coverage and complexity analysis. With that history, I knew good and well that I needed a good code coverage tool to help me with writing effective unit tests. So, I went the only real place I knew to go, NCover.
Well, after some time futzing with NCover versions, I just cant seem to get it to work. Here is the error it gives me when I try and run it in Visual Studio:
—— Test started: Assembly: RoboDojo.Core.Specs.dll ——
NCover couldn’t create a coverage report.
After some Googling, it seems there are several potential causes of this problem, but I tried all the known fixes with no good result. Further, the user experience of NCover simply didn’t seem to provide the tight integration I get from VSTS.
Because my need for a coverage tool is so acute, I went back to MSTest.
NCover – Fail
Somewhere along the way, I figured out I could get a copy of TestDriven.NET for free for use on open source and individual project, which this is. So, after installing TestDriven.NET I have the ability to execute my MSTest unit tests with a different keystroke, but I really don’t see that it buys me anything.
When installing TestDriven.NET, it laid down yet another version of NCover, which produced the same behavior as the standalone version I downloaded earlier.
It will run my MSTest tests with the VSTS code coverage tool, so that’s nice, but at the end of the day I think all I get from TD.NET is some different ways to execute unit tests.
TestDriven.NET – Fail, but only because of NCover
ReSharper is the ubiquitous-must-have-it tool for VS and hardly bears explanation. I did find Sneal, a unit test runner adapter that lets me run my MSTest unit tests with the ReSharper test runner. This is a big win because ReSharper’s unit test runner beats both VS’s and TD.NET’s.
The Sneal plugin has some issues though and I will be trolling for another plugin. Overall, it is win, though.
ReSharper – Win
SVN. No experimentation here. I am tired already, so I am sticking with a known quantity.
For clients, I am using AnkhSVN integrated into Visual Studio and TortoiseSVN. Frankly, I don’t get the argument that non integration into the IDE is a good thing. I find having to flip back and forth between Windows Explorer and Visual Studio to be high friction.
Tortoise, is great, but integration lets me add and delete classes without worrying that I will break the build.
AnkhSVN will sometimes get into a loopy state wherein it thinks I have mutliple working copies of my project going on. This happens when deleting or renaming directories and the only fix seems to be restarting VS.
SVN, AnkhSVN, Tortoise SVN – Win
Although I have good experience with CruiseControl.NET + NAnt, I really just wanted a simple solution file based build and test execution. Nothing fancy.
At the prompting of a friend (thanks, Chris) I decided to try TeamCity, and I am glad I did. Easy setup. Nice integration. Easy configuration. Talks to my hosted SVN repo with no problems and uses my Gmail account to send build notifications.
TeamCity – Win!
You know, VSTS has its issues and they have been vetted publicly and passionately. Frankly, I am not unhappy with the tooling I am getting and will probably uninstall NCover, NUnit, TestDriven.NET and stay with what I am getting from VSTS.
That is, unless you can tell me I have done something wrong or something else I just MUST try. What are you running on your machine that makes life easier?