Check is a unit testing framework for C. It features a simple interface for defining unit tests, putting little in the way of the developer. Tests are run in a separate address space, so Check can catch both assertion failures and code errors that cause segmentation faults or other signals. The output from unit tests can be used within source code editors and IDEs..
Check was inspired by similar frameworks that currently exist for most programming languages; the most famous example being JUnit for Java (www.junit.org). There is a list of unit testing frameworks for multiple languages at www.xprogramming.com/software.htm . Unit testing has a long history as part of formal quality assurance methodologies, but has recently been associated with the lightweight methodology called Extreme Programming. In that methodology, the characteristic practice involves interspersing unit test writing with coding (" test a little, code a little"). While the incremental unit test/code approach is indispensable to Extreme Programming, it is also applicable, and perhaps indispensable, outside of that methodology.
The incremental test/code approach provides three main benefits to the developer:
That third reason is the one that turns people into unit testing addicts. There is nothing so satisfying as doing a wholesale replacement of an implementation, and having the unit tests reassure you at each step of that change that all is well. It is like the difference between exploring the wilderness with and without a good map and compass: without the proper gear, you are more likely to proceed cautiously and stick to the marked trails; with it, you can take the most direct path to where you want to go.
The Check project page is at http://sourceforge.net/projects/check/
The Check manual contains a good tutorial introduction.
This project is at the moment only sporadically maintained, which means
that it has reached a point where it is fairly stable, and it does the
job well for people that use it. It does not mean that Check is some
abandoned piece of unworking junk lying around on SourceForge. There are packages in Fedora and
Debian, and probably several other distributions.
Check can be dowloaded from here.
The authors welcome any and all help with Check, whether through
enhancement requests, bug reports, patches, or documentation.
Mailing lists are preferred to forums as they're easier to
monitor. Please visit the Check project page at http://sourceforge.net/projects/check/
Patches to Check, unless trivial, should be against the latest SVN
trunk, and should include a full set of unit tests testing the new
behavior. No functionality goes into Check without unit tests, and
submitting a patch without automated testing guarantees that it will go
into the request queue, not the "to be applied soon" pool.