In my earlier post, The Death Of NUnit – Will it be Ice?, I adopted the notion – promoted in some mailing list posts – that NUnit might be dead or dying. I identified two big worries: death by ice and death by fire. Ice stood for frozen inactivity on the part of the project itself – failure to move ahead. Fire symbolized competitive forces, which might make NUnit obsolete.
In that first article, I tried to show that NUnit is not frozen but has been moving ahead, although we were remiss in not releasing early and often. I promised we get some new releases out, and indeed we have. NUnit has had three times since then and NUnit 2.2.5 is our new recommended release. You can see it’s features in the release notes. Meanwhile, work is underway on the NUnit 2.4 release, as described in our roadmap.
So now, in this post, I want to address the question of death by fire. In particular, some folks have expressed the opinion that the unit-testing features in Visual Studio 2005 Team System (VSTS) will be the end of NUnit, so lets look at some of the main issues in comparing the two “products”.
NUnit is tailored for use in Test-Driven Development. If you’ve used other xUnit test frameworks, NUnit looks and works pretty much the same as they do.
VSTS unit tests can be used for TDD, but it requires a fair amount of effort. Essentially, you’re fighting the way the environment wants you to work when you try to work test-first under VSTS.
Of course, Microsoft has some pretty smart people and many of them do TDD – often using NUnit. So my guess is that some future release will correct this problem. But for now, NUnit is the clear winner.
Not everyone wants to develop with Visual Studio. Even if they do use it on Windows, many folks want to be able to build and test their applications on other platforms as well. Obviously, Visual Studio’s unit-testing support is only useful when you use Visual Studio.
NUnit , on the other hand, can be used without buying any version of Visual Studio. You can simply use the .NET SDK directly or use open-source IDEs such as SharpDevelop, MonoDevelop or Eclipse. Using Mono, NUnit works on Linux and Unix-based systems – in fact, Mono itself is tested with NUnit. This makes NUnit ideal for use in developing multi-platform applications, or those that might eventually be ported to other platforms.
As described on the Microsoft Visual Studio site, Visual Studio 2005 is distributed in the following editions:
- Visual Studio Express Editions
- Visual Studio Standard Edition
- Visual Studio 2005 Professional Edition
- Visual Studio 2005 Team System
Of the above, only the Team System includes unit-testing support. Specifically, the entry-level for developers wanting unit-testing support is Visual Studio 2005 Team Edition for Software Developers. The Microsoft How to Buy page gives comparative prices for the various editions.
NUnit, on the other hand works with all editions of Visual Studio .Net, Visual Studio .Net 2003 and Visual Studio 2005. That includes the free express editions.
For most of its user base, the fact that NUnit is open-source is a plus. That won’t change. Of course, there are corporations that prefer to buy proprietary commercial software. That’s not new. Those folks are not our current users and we’re not particularly interested in them.
NUnit will continue to evolve, as described in our Vision Statement and Roadmap. Some of our developers will get busy with other things. Some of our users will take their place. Eventually, the NUnit project may come to an end, but even then, NUnit won’t be obsolete because its users will be able to update it themselves.
Finally, if we’re lucky, the ideas that empower NUnit will spread and vendors like Microsoft will need to pay attention to them, leading to even tougher “competition.”
So much the better.