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  

TestListener Class Reference
[Tracking test execution]

Listener for test progress and result. More...

#include <TestListener.h>

Inheritance diagram for TestListener:

Inheritance graph
[legend]
List of all members.

Public Methods

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

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

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

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

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

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

virtual void endTestRun (Test *, TestResult *)
 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   [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   [inline, virtual]
 

Called by a TestComposite after running its child tests.

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

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

Reimplemented in BriefTestProgressListener.

virtual void TestListener::endTestRun Test  ,
TestResult  
[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   [inline, virtual]
 

Called by a TestComposite just before running its child tests.

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

Called when just before a TestCase is run.

Reimplemented in BriefTestProgressListener, TestResultCollector, TextTestProgressListener, and TextTestResult.

virtual void TestListener::startTestRun Test  ,
TestResult  
[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