Unit testing has evolved from a fringe activity to an industry-accepted way to develop software. This change in attitude was aided by the introduction of numerous freely available testing frameworks -- most notably, NUnit.
Microsoft's testing options have drawn the ire of the development community for years because there has been a lack of testing support from the company. Non-Microsoft tools require extra product installations and setup, so many developers called for Microsoft to offer such tools with its IDE. Finally, Visual Studio 2008 Professional Edition includes Microsoft's own unit testing offering.
I'll offer more details about the recent changes in Visual Studio 2008 and survey the current landscape of .NET testing options.
Testing options in Visual Studio 2008 Professional Edition
Visual Studio 2005 Team System included Microsoft's testing engine (MSTest), but many developers still clamored for the testing tools to be available to a wider audience. Their efforts paid off, and MSTest is now available in Visual Studio 2008 Professional Edition.
The new Test drop-down menu within the IDE provides easy access to the testing framework. It allows you to author, generate, and run tests. Other changes have been introduced as well. For instance, a new Run Tests context-menu option has been added to the MSTest engine to simplify the execution of tests.
Test-driven development options
A basic tenet of eXtreme programming is test-driven development. The goal is to create tests before developing any code. This goes against traditional programming; instead of writing functional code and then testing code as an afterthought (if testing is performed at all), you start with the test code.
You make sure the test is correct according to the necessary logic. With the test complete, it is available when the code is ready, and you quickly know if the code performs as desired. Basically, you develop code that will pass the test.
A key part of test-driven development is the automated unit test that properly tests code functionality. Testing frameworks provide a vehicle for creating and running these tests. Various frameworks exist for .NET developers, including the following:
- NUnit: An open source unit-testing framework for the .NET platform. It is the leader in this category, as it mimics the JUnit Java offering for the .NET platform; that is, it brings test-driven development to .NET. NUnit provides both a GUI and command-line interface. It also promotes unit testing your .NET code after coding is complete or using the test-driven approach to development. (Learn more about this framework by reading my article, "NUnit allows effective unit testing with .NET applications.")
- xUnit.net: A freely available testing framework available via Microsoft's version of open source with the CodePlex site. It was designed with a goal of closely aligning itself with the .NET Framework. (One of the developers of xUnit.net originally worked on NUnit.) xUnit.net was built using .NET Framework 2.0; it does not require any installation, and it offers better integration with source control tools. xUnit.net focuses heavily on test-driven development as opposed to just testing, so there are some differences with NUnit. xUnit.net is the latest to join the pool of testing frameworks.
- MbUnit: MbUnit or the Generative Unit Test Framework for the .NET Framework is offered free of charge. It was built using the .NET Framework, and it promotes test-driven development. It offers both command-line and GUI interfaces along the lines of the same features available in NUnit.
- QuickUnit.net: A simple testing framework written in C# for .NET applications. It is a minimalist approach to testing for developers who ignore writing unit tests and test-driven development. It can be used as a first step to become familiar with testing.
- csUnit: A freely available testing framework that promotes test-driven development. It offers a graphical interface and easy integration with Visual Studio 2005.
Visual Studio add-ons
There are a few Visual Studio add-ons that make it easier to use the various testing frameworks within the IDE. One of the more popular products is TestDriven.NET; however, unlike the testing frameworks, it is not free. TestDriven.NET allows you to use the features of the testing framework from within Visual Studio via one click of the mouse. It works with all versions of Visual Studio.
Will developers migrate from their current testing tools?
The Professional Edition of the IDE is so popular that, theoretically, the inclusion of MSTest makes unit testing available to the masses. The requirements for third-party products to support testing are gone. Developers can be up and running with unit testing out of the box.
While it is a great addition, it makes me wonder if it will encourage developers to migrate from existing testing tools and adopt a test-driven approach for their projects. There are a number of solid tools currently available, and I think it will be hard to pull developers from these tools.
Do you plan to check out the new unit testing options in Visual Studio 2008 Professional Edition or stick with your current tools? Share your thoughts with the Visual Studio Developer community.
Tony Patton began his professional career as an application developer earning Java, VB, Lotus, and XML certifications to bolster his knowledge.
---------------------------------------------------------------------------------------Get weekly development tips in your inbox TechRepublic's free Visual Studio Developer newsletter, delivered each Wednesday, contains useful tips and coding examples on topics such as Web services, ASP.NET, ADO.NET, and Visual Studio .NET. Automatically subscribe today!
Tony Patton has worn many hats over his 15+ years in the IT industry while witnessing many technologies come and go. He currently focuses on .NET and Web Development while trying to grasp the many facets of supporting such technologies in a production environment on a daily basis.