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/. 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 has reached a point where it is fairly stable, and it
does the job well for people that use it. Therefore it is not that
actively maintained and long times may pass between checkins. It does
not mean that Check is some abandoned piece of unworking junk laying
around on SourceForge. We still aim for at least one release per year.
There are packages in Fedora and Debian, and probably several other
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.