CppUnit project page FAQ CppUnit home page

Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | 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 *)
 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