Jump to content

Unit testing: Difference between revisions

From Wikipedia, the free encyclopedia
Content deleted Content added
Line 31: Line 31:
* [[NUnit]] - a unit testing module for [[Microsoft .NET]]
* [[NUnit]] - a unit testing module for [[Microsoft .NET]]
* [[SUnit]] - a unit testing module for [[Smalltalk]]
* [[SUnit]] - a unit testing module for [[Smalltalk]]
* [[OCUnit]] - a unit testing framework for [[Objective-C]]


== External links ==
== External links ==

Revision as of 06:30, 2 April 2005

In computer programming, a unit test is a method of testing the correctness of a particular module of source code.

The idea is to write test cases for every non-trivial function or method in the module so that each test case is separate from the others if possible.

Benefits

The goal of unit testing is to isolate each part of the program and show that the individual parts are correct. It provides a written contract that the piece must satisfy. This isolated testing provides two main benefits:

1. Encourages change
Unit testing allows the programmer to refactor code at a later date, and make sure the module still works correctly (regression testing). This provides the benefit of encouraging programmers to make changes to the code since it is easy for the programmer to check if the piece is still working properly.
2. Simplifies Integration
Unit testing helps eliminate uncertainty in the pieces themselves and can be used in a bottom-up testing style approach. By testing the parts of a program first and then testing the sum of its parts will make integration testing easier.

Limitations

It is important to realize that unit-testing will not catch every error in the program. By definition, it only tests the functionality of the units themselves. Therefore, it will not catch integration errors, performance problems and any other system-wide issues. Unit testing is only effective if it is used in conjunction with other software testing activities.

Applications

Unit Testing predates, by far, Extreme Programming.

The unit testing concept is part of the Extreme Programming method of software engineering. Various unit testing frameworks, based on a design by Kent Beck, have come to be known as xUnit testing frameworks and are available for many programming languages and development platforms. Unit testing is the building block to test driven development (TDD). Extreme Programming and most other methods use unit tests to perform black box testing.

Note that the Extreme Programming community has renamed unit tests to "programmer tests".

The D programming language offers direct support for unit testing.

See also