The single most important thing in software development is testing.
And the most important thing about testing is automatic testing. Automatic testing is the basis of almost all other aims and goals of software development. You cannot refactor a piece of code without being able to rely on extensive tests. You cannot change a highly reused module, if you cannot be sure that all users or clients of that module will continue to work. Test driver of something is a program, the task of which is to test this something automatically.
Automatic testing should take place on all levels of software: the single C-function (better: <programming language>-function) should have a test driver, each program, each library, each module, each class. This includes internal or private classes as well. On the other end, the creation of html pages or man entries should be tested automatically. Every perl and bash script, every sql and xml piece should have its own test driver.
Automatic testing should include the release, publish, build make version and most notably the install phase of a package.
This is one reason for the generation of main wrappers around commands: then it is easy to write test bash-scripts for those commands.
The test drivers are in a form, that is callable without user interface in a kind of batch mode. This it is possible to start the tests from within crontab.
And all these test drivers should be chained and bound together in one huge test suite, so that it is a single command to be entered on the command line to test everything.
To further force the everlasting test, siliconBrain's makefile has an automatic call to makeTest, if it exists in distribution/programs. Normally this is created from a makeTest.perl or makeTest.bash but can be a program in any language. After having build all targets, siliconBrain automatically calls makeTest. Hence with every make there is a test.
In my personal environment I have a keystroke, which invokes make from within my editor. So often I include some calls to programs or scripts at the beginning of my makeTest.bash, so I can make a change with my editor, and with a single key, it is compiled and tested.
To do the automatic testing is more important, than to use one of these sexy test units or frames, which are available. So, if a test frame does help you to put your tests into make and crontab then use it. If it is not runnable in batch, don't use it. And if it is not available for some or all parts of your project, write your own test drivers.