CppUnit project page | FAQ

Classes | Public Member Functions | Protected Attributes | Private Member Functions | List of all members
TestRunner Class Reference
Executing test

Generic test runner. More...

`#include <TestRunner.h>`

Collaboration diagram for TestRunner:
[legend]

## Classes
class | WrappingSuite
| (INTERNAL) Mutating test suite. More...

## Public Member Functions
| 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
WrappingSuite * | m_suite

## Private Member Functions
| 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() [1/2]

TestRunner::TestRunner | ( |  | ) |

Constructs a TestRunner object.

## ◆ ~TestRunner()

TestRunner::~TestRunner | ( |  | ) |
| virtual

Destructor.

## ◆ TestRunner() [2/2]

TestRunner::TestRunner | ( | const TestRunner & | copy | ) |
| private

Prevents the use of the copy constructor.

## Member Function Documentation

## ◆ addTest()

void TestRunner::addTest | ( | Test * | test | ) |
| virtual

Adds the specified test.

Parameters

  test | Test to add. The TestRunner takes ownership of the test.

## ◆ operator=()

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

Prevents the use of the copy operator.

## ◆ run()

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

## ◆ m_suite

WrappingSuite* TestRunner::m_suite
| protected

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

- TestRunner.h
- TestRunner.cpp

TestResult.h
TextUi::TestRunner
TextTestRunner TestRunner
Definition: ui/text/TestRunner.h:16
TestFactoryRegistry.h
TestResultCollector.h
CompilerOutputter.h
TextTestProgressListener.h
TestRunner.h
TextTestRunner::run
bool run(std::string testPath="", bool doWait=false, bool doPrintResult=true, bool doPrintProgress=true)
Definition: TextTestRunner.cpp:54

| Send comments to: CppUnit Developers