Thursday, December 08, 2005

xUnit and testing frameworks

Kent Beck published a unit test framework for the Smalltalk language in 1999. The architecture of SmalltalkUnit (or SUnit) represents a sweet spot, an ideal balance between simplicity and utility. Later, Erich Gamma ported SUnit to Java, creating JUnit.
JUnit in turn begat CppUnit, NUnit, PyUnit, XMLUnit, and ports to many other languages. A dizzying array of unit test frameworks built on the same model now exists. These frameworks are known as the xUnit family of tools.

All are free, open source software.

xUnit Family Members

Some of the most popular xUnit test frameworks are listed next, with brief summaries of their target language and testing domain. This is just a sample of the many xUnit-derived test tools. Anything else to add?

JUnit
The reference implementation of xUnit, JUnit is by far the most widely used and extended unit test framework. It is implemented in and used with Java.

CppUnit
The C++ port of JUnit, it closely follows the JUnit model.

NUnit
The xUnit for .NET. Rather than being a direct port of JUnit, it has a .NET-specific implementation that generally follows the xUnit model. It is written in C# and can be used to test any .NET language, including C#, VB.Net, J#, and Managed C++.

PyUnit
The Python version of xUnit. It is included as a standard component of Python 2.1.

SUnit
Also known as SmalltalkUnit, this is the original xUnit, and the basis of the xUnit architecture. It is written in and used with the Smalltalk language.

vbUnit
vbUnit is xUnit for Visual Basic (VB). It is written in VB and supports building unit tests in VB and COM development.

utPLSQL
utPLSQL is xUnit for Oracle’s PL/SQL language. It is written in and used with PL/SQL.

MinUnit
A great example of a minimal but functional unit test framework. It is implemented in three lines of C and is used to test C code.

xUnit Extensions

Beyond the xUnits themselves, many add-on tools are available that extend the functionality of existing unit test frameworks into specialized domains, rather than acting as standalone tools. A representative set of popular extensions is listed here.

XMLUnit
An xUnit extension to support XML testing. Versions exist as extensions to both JUnit and NUnit.

JUnitPerf
A JUnit extension that supports writing code performance and scalability tests. It is written in and used with Java.

Cactus
A JUnit extension for unit testing server-side code such as servlets, JSPs, or EJBs. It is written in and used with Java.

JFCUnit
A JUnit extension that supports writing GUI tests for Java Swing applications. It is written in and used with Java.

NUnitForms
An NUnit extension that supports GUI tests of Windows Forms applications. It is written in C# and can be used with any .NET language.

HTMLUnit
An extension to JUnit that tests web-based applications. It simulates a web browser, and is oriented towards writing tests that deal with HTML pages.

HTTPUnit
Another JUnit extension that tests web-based applications. It is oriented towards writing tests that deal with HTTP request and response objects.

Jester
A helpful extension to JUnit that automatically finds and reports code that is not covered by unit tests. Versions exist for Python (Pester) and NUnit (Nester).

Anything to add?

0 Comments:

Post a Comment

<< Home