CppUnit project page FAQ CppUnit home page

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

TestListener Class Reference
[Tracking test execution]

Listener for test progress and result. More...

#include <TestListener.h>

Inheritance diagram for TestListener:

BriefTestProgressListener TestSuccessListener TextTestProgressListener TestResultCollector TextTestResult List of all members.

Public Member Functions

virtual ~TestListener ()
virtual void startTest (Test *test)
 Called when just before a TestCase is run.

virtual void addFailure (const TestFailure &failure)
 Called when a failure occurs while running a test.

virtual void endTest (Test *test)
 Called just after a TestCase was run (even if a failure occured).

virtual void startSuite (Test *suite)
 Called by a TestComposite just before running its child tests.

virtual void endSuite (Test *suite)
 Called by a TestComposite after running its child tests.

virtual void startTestRun (Test *test, TestResult *eventManager)
 Called by a TestRunner before running the test.

virtual void endTestRun (Test *test, TestResult *eventManager)
 Called by a TestRunner after running the test.


Detailed Description

Listener for test progress and result.

Implementing the Observer pattern a TestListener may be registered to a TestResult to obtain information on the testing progress. Use specialized sub classes of TestListener for text output (TextTestProgressListener). Do not use the Listener for the test result output, use a subclass of Outputter instead.

The test framework distinguishes between failures and errors. A failure is anticipated and checked for with assertions. Errors are unanticipated problems signified by exceptions that are not generated by the framework.

Here is an example to track test time:

#include <cppunit/TestListener.h> #include <cppunit/Test.h> #include <time.h> // for clock() class TimingListener : public CppUnit::TestListener { public: void startTest( CppUnit::Test *test ) { _chronometer.start(); } void endTest( CppUnit::Test *test ) { _chronometer.end(); addTest( test, _chronometer.elapsedTime() ); } // ... (interface to add/read test timing result) private: Clock _chronometer; };

And another example that track failure/success at test suite level and captures the TestPath of each suite:

class SuiteTracker : public CppUnit::TestListener { public: void startSuite( CppUnit::Test *suite ) { m_currentPath.add( suite ); } void addFailure( const TestFailure &failure ) { m_suiteFailure.top() = false; } void endSuite( CppUnit::Test *suite ) { m_suiteStatus.insert( std::make_pair( suite, m_suiteFailure.top() ) ); m_suitePaths.insert( std::make_pair( suite, m_currentPath ) ); m_currentPath.up(); m_suiteFailure.pop(); } private: std::stack<bool> m_suiteFailure; CppUnit::TestPath m_currentPath; std::map<CppUnit::Test *, bool> m_suiteStatus; std::map<CppUnit::Test *, CppUnit::TestPath> m_suitePaths; };

See also:
TestResult


Constructor & Destructor Documentation

virtual TestListener::~TestListener  )  [inline, virtual]
 


Member Function Documentation

virtual void TestListener::addFailure const TestFailure failure  )  [inline, virtual]
 

Called when a failure occurs while running a test.

See also:
TestFailure.
Warning:
failure is a temporary object that is destroyed after the method call. Use TestFailure::clone() to create a duplicate.

Reimplemented in BriefTestProgressListener, TestResultCollector, TestSuccessListener, TextTestProgressListener, and TextTestResult.

virtual void TestListener::endSuite Test suite  )  [inline, virtual]
 

Called by a TestComposite after running its child tests.

virtual void TestListener::endTest Test test  )  [inline, virtual]
 

Called just after a TestCase was run (even if a failure occured).

Reimplemented in BriefTestProgressListener.

virtual void TestListener::endTestRun Test test,
TestResult eventManager
[inline, virtual]
 

Called by a TestRunner after running the test.

TextTestProgressListener use this to emit a line break. You can also use this to do some global uninitialisation.

Parameters:
test Test that was run.
eventManager Event manager used for the test run.

Reimplemented in TextTestProgressListener.

virtual void TestListener::startSuite Test suite  )  [inline, virtual]
 

Called by a TestComposite just before running its child tests.

virtual void TestListener::startTest Test test  )  [inline, virtual]
 

Called when just before a TestCase is run.

Reimplemented in BriefTestProgressListener, TestResultCollector, TextTestProgressListener, and TextTestResult.

virtual void TestListener::startTestRun Test test,
TestResult eventManager
[inline, virtual]
 

Called by a TestRunner before running the test.

You can use this to do some global initialisation. A listener could also use to output a 'prolog' to the test run.

Parameters:
test Test that is going to be run.
eventManager Event manager used for the test run.


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