CppUnit project page FAQ CppUnit home page

Main Page   Modules   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

TestRunner Class Reference
[Executing test]

Generic test runner. More...

#include <TestRunner.h>

List of all members.

Public Methods

 TestRunner ()
 Constructs a TestRunner object. More...

virtual ~TestRunner ()
 Destructor. More...

virtual void addTest (Test *test)
 Adds the specified test. More...

virtual void run (TestResult &controller, const std::string &testPath="")
 Runs a test using the specified controller. More...


Protected Attributes

WrappingSuitem_suite

Private Methods

 TestRunner (const TestRunner &copy)
 Prevents the use of the copy constructor. More...

void operator= (const TestRunner &copy)
 Prevents the use of the copy operator. More...


Detailed Description

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:

 #include <cppunit/extensions/TestFactoryRegistry.h>
 #include <cppunit/CompilerOutputter.h>
 #include <cppunit/TestResult.h>
 #include <cppunit/TestResultCollector.h>
 #include <cppunit/TestRunner.h>
 #include <cppunit/TextTestProgressListener.h>
 
 
 int 
 main( int argc, char* argv[] )
 {
   std::string testPath = (argc > 1) ? std::string(argv[1]) : "";
 
   // Create the event manager and test controller
   CppUnit::TestResult controller;
 
   // Add a listener that colllects test result
   CppUnit::TestResultCollector result;
   controller.addListener( &result );        
 
   // Add a listener that print dots as test run.
   CppUnit::TextTestProgressListener progress;
   controller.addListener( &progress );      
 
   // Add the top suite to the test runner
   CppUnit::TestRunner runner;
   runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );   
   try
   {
     std::cout << "Running "  <<  testPath;
     runner.run( controller, testPath );
 
     std::cerr << std::endl;
 
     // Print test in a compiler compatible format.
     CppUnit::CompilerOutputter outputter( &result, std::cerr );
     outputter.write();                      
   }
   catch ( std::invalid_argument &e )  // Test path not resolved
   {
     std::cerr  <<  std::endl  
                <<  "ERROR: "  <<  e.what()
                << std::endl;
     return 0;
   }
 
   return result.wasSuccessful() ? 0 : 1;
 }


Constructor & Destructor Documentation

TestRunner::TestRunner  
 

Constructs a TestRunner object.

TestRunner::~TestRunner   [virtual]
 

Destructor.

TestRunner::TestRunner const TestRunner &    copy [private]
 

Prevents the use of the copy constructor.


Member Function Documentation

void TestRunner::addTest Test   test [virtual]
 

Adds the specified test.

Parameters:
test  Test to add. The TestRunner takes ownership of the test.

void TestRunner::operator= const TestRunner &    copy [private]
 

Prevents the use of the copy operator.

void TestRunner::run TestResult   controller,
const std::string &    testPath = ""
[virtual]
 

Runs a test using the specified controller.

Parameters:
controller  Event manager and controller used for testing
testPath  Test path string. See Test::resolveTestPath() for detail.
Exceptions:
std::invalid_argument  if no test matching testPath is found. see TestPath::TestPath( Test*, const std::string &) for detail.


Member Data Documentation

WrappingSuite* TestRunner::m_suite [protected]
 


The documentation for this class was generated from the following files:
SourceForge Logo hosts this site. Send comments to:
CppUnit Developers