A couple months ago at an agile users group the question was posed, “Do I need Visual Studio Team System to do Test Driven Development?.” The answer is an emphatic no. I think it is great that Microsoft has tacitly endorsed TDD and Refactoring by building support into VS.NET, but VSTS is not the only game in town for agile development with .NET.
The painful truth is that the Java community has had far superior IDE support from tools like IntelliJ and Eclipse. IntelliJ is an agile developer’s dream IDE. Very good integration with source control, JUnit, and tremendous support for refactoring and code generation. The .Net world got a late start, and Microsoft’s emphasis always seems to be on providing more visual drag ‘n drop programming for Mort. Lucky for us we don’t have to defect to Java or wait and pay (a lot apparently) for VSTS because there are alternatives for .Net today. And don’t think for a minute Microsoft hasn’t heard “just make it be like IntelliJ/Eclipse” a few too many times for their own comfort.
The VSTS team at Microsoft seems to bristle anytime someone mentions open source alternatives and spit out a comment about “Cobbling together downloaded tools.” The reality is that these tools are superior in some respects. Assuming you don’t mind assembling the stack yourself, you can use these mostly open source (and free) tools to create what I affectionately call my “Poor Man’s IntelliJ.”
- NUnit – The defacto standard for unit testing in .NET. Arguably better than its Java forebear. I know the NUnit guys are already planning to be compatible with the Whidbey unit testing. I’ve also heard good things about MbUnit. Supplement NUnit with NMock for dynamic mock objects and NUnitForms and NUnitASP for UI testing.
- TestDriven.NET – VS.NET plugin to run NUnit or MbUnit tests in the IDE. I love this tool. It allows you to run tests by clicking on a unit test, testfixture class, or namespace. It also provides the ability to start the debugger using any test method as an entry point. You lose the visual green bar, but the text output includes stack traces that can be clicked on to navigate to the offending test code.
- NAnt and NAntContrib – Automated build tool. Right now it looks like MSBuild provides only a subset of the NAnt/NAntContrib tasks, several of which my team depends on in our build process. The MSBuild integration/synchronization with VS2005 is cool, but you can run NAnt from within VS.NET today. Using the solution task, a NAnt script is not too onerous to maintain for moderate sized solutions.
- Subversion – We started using Subversion, a free open source version control system built to finally replace CVS. So far I think it is the most problem free source control I’ve ever used. CVS has a personal animus towards me, but is still a viable and proven tool. VSS is simply unsuitable for serious development needs. Agile development can require more robust source control and VSS just won’t deliver.
- Ankh – VS.NET plugin for Subversion integration. I’m able to do probably 90% of my source control updating and commits from within the IDE now. It has some contention with ReSharper, but I still enjoy using the tool. I still use TortoiseSVN occasionally.
- CruiseControl.NET – Continuous Integration tool. The latest versions seem to be much easier to install and configure, and the website reporting has gotten much easier to use for debugging build failures. Very good integration now with Subversion, NAnt, and NUnit. To the best of my knowledge, VSTS only supports scheduled builds anyway.
- ReSharper – The only commercial tool on this list. The best $100 tool anywhere. ReSharper provides refactoring, code navigation, and code generation templates. Since it became stable last year (the beta was flaky), I will not develop on any box that does not have ReSharper. The refactoring support in ReSharper 1.5 is superior to VS 2005 in many respects anyway.
- NCover – Code coverage tool. The VSTS equivalent integrated into the IDE does sound really good.
- OpenWiki – Use any Wiki engine as a great means of storing and organizing project information and documentation. I’ve used Jira in the past for project tracking and actually liked it, but a Wiki is good enough for now.
This is not an exhaustive list be any means, but it covers most of the bases. I’m much happier with .NET development now that I can perform most tasks from within the IDE.
To be honest, I have not paid much attention to Visual Studio Team System. My shop probably doesn’t have any justifiable need for VSTS and a deep investment in existing tools. Some of the ideas for integrated project tracking and metrics sound pretty cool, but by itself an agile process provides so much more transparency than heavier methods that I’m not sure the formal tracking is important.
Feel free to suggest other tools. I would like to hear from people adopting VSTS, too.