CppUnit project page | FAQ | CppUnit home page

- Main Page
- Modules
- Namespaces
- Classes
- Files
- Related Pages

- Alphabetical List
- Class List
- Class Hierarchy
- Class Members

# TestRunner Class Reference
[Executing test]

Generic test runner. More...

`#include <TestRunner.h>`

Collaboration diagram for TestRunner:

[legend]
List of all members.

## Public Member Functions
| TestRunner ()
| Constructs a TestRunner object.
virtual | ~TestRunner ()
| Destructor.
virtual void | addTest (Test *test)
| Adds the specified test.
virtual void | run (TestResult &controller, const std::string &testPath="")
| Runs a test using the specified controller.
## Protected Attributes
WrappingSuite * | m_suite
## Private Member Functions
| TestRunner (const TestRunner &copy)
| Prevents the use of the copy constructor.
void | operator= (const TestRunner &copy)
| Prevents the use of the copy operator.
## Classes
class | WrappingSuite
| (INTERNAL) Mutating test suite. 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::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.

void TestRunner::operator= | ( | const TestRunner & | copy | ) | `[private]`

Prevents the use of the copy operator.

## Member Data Documentation

WrappingSuite* TestRunner::m_suite`[protected]`

The documentation for this class was generated from the following files:

- cppunit/TestRunner.h
- TestRunner.cpp

| hosts this site. |  | Send comments to: CppUnit Developers