Generic test runner. 
The TestRunner assumes ownership of all added tests: you can not add test or suite that are local variable since they can't be deleted.
Example of usage: 
 
 
int 
main( int argc, char* argv[] )
{
  std::string testPath = (argc > 1) ? std::string(argv[1]) : "";
 
  
  CppUnit::TestResult controller;
 
  
  CppUnit::TestResultCollector result;
  controller.addListener( &result );        
 
  
  CppUnit::TextTestProgressListener progress;
  controller.addListener( &progress );      
 
  
  runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );   
  try
  {
    std::cout << "Running "  <<  testPath;
    runner.
run( controller, testPath );
 
    std::cerr << std::endl;
 
    
    CppUnit::CompilerOutputter outputter( &result, std::cerr );
    outputter.write();                      
  }
  catch ( std::invalid_argument &e )  
  {
    std::cerr  <<  std::endl  
               <<  "ERROR: "  <<  e.what()
               << std::endl;
    return 0;
  }
 
  return result.wasSuccessful() ? 0 : 1;
}