TestDriven.NET is simply the most useful tool outside of Visual Studio itself that any .NET developer could have.  And I'll lead in with a little secret - it's still completely the top tool on the list EVEN IF YOU'RE NOT THE SLIGHTEST BIT INTERESTED IN TESTING YOUR CODE.

OK, so lets look at this thing.  What does it do?  Here's the standard billing:  It allows you to run your unit tests right there inside of Visual Studio.  Let's take a look:

You navigate to your test code, right click, and hit the "Run Tests" option.  You get the results right there in the Visual Studio Output window:

It also generates a nice HTML document for your review:

If you click inside of a test method it runs just that one test.  If you click outside of any test method it runs all of the tests.  Nice and simple.

But if you set a breakpoint, and then click on the "Test With Debugger" option like this:

You can actually STEP IN to your test code like this:


It gets even better.  While stepping through your test code, you can STEP RIGHT INTO your actual code being tested:

OK, so all this is great for running your tests.  And there's more I haven't discussed, of course.  But what about my promise that this thing is awesome even if you don't care about tests at all?

You can step into "real" code just as you would "test" code.  Just set a breakpoint, right click, hit Test with Debugger, and step into any method you want.  Let's see that:


And you can still use the Immediate Window to set the value of incoming parameters, etc.

There once was a tool called "Snippet Compiler" whose whole purpose was to allow you to type in some quick throw-away code to see if it compiles, or what it does, without having to create a whole project.  A learning tool, if you will.   With TestDriven.NET its right within whatever project you're already working on :)

Oh, and I guess I should mention that it can run both NUnit and MbUnit tests, as well as a number of other cool .NET things like that.