#ifndef CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H #define CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H #include #include #include CPPUNIT_NS_BEGIN class Outputter; class Test; class TestSuite; class TextOutputter; class TestResult; class TestResultCollector; /*! * \brief A text mode test runner. * \ingroup WritingTestResult * \ingroup ExecutingTest * * The test runner manage the life cycle of the added tests. * * The test runner can run only one of the added tests or all the tests. * * TestRunner prints out a trace as the tests are executed followed by a * summary at the end. The trace and summary print are optional. * * Here is an example of use: * * \code * CppUnit::TextTestRunner runner; * runner.addTest( ExampleTestCase::suite() ); * runner.run( "", true ); // Run all tests and wait * \endcode * * The trace is printed using a TextTestProgressListener. The summary is printed * using a TextOutputter. * * You can specify an alternate Outputter at construction * or later with setOutputter(). * * After construction, you can register additional TestListener to eventManager(), * for a custom progress trace, for example. * * \code * CppUnit::TextTestRunner runner; * runner.addTest( ExampleTestCase::suite() ); * runner.setOutputter( CppUnit::CompilerOutputter::defaultOutputter( * &runner.result(), * std::cerr ) ); * MyCustomProgressTestListener progress; * runner.eventManager().addListener( &progress ); * runner.run( "", true ); // Run all tests and wait * \endcode * * \see CompilerOutputter, XmlOutputter, TextOutputter. */ class CPPUNIT_API TextTestRunner : public CPPUNIT_NS::TestRunner { public: TextTestRunner( Outputter *outputter =NULL ); virtual ~TextTestRunner(); bool run( std::string testPath ="", bool doWait = false, bool doPrintResult = true, bool doPrintProgress = true ); void setOutputter( Outputter *outputter ); TestResultCollector &result() const; TestResult &eventManager() const; public: // overridden from TestRunner (to avoid hidden virtual function warning) virtual void run( TestResult &controller, const std::string &testPath = "" ); protected: virtual void wait( bool doWait ); virtual void printResult( bool doPrintResult ); private: // prohibit copying TextTestRunner( const TextTestRunner& ); // prohibit copying TextTestRunner& operator=( const TextTestRunner& ); TestResultCollector *m_result; TestResult *m_eventManager; Outputter *m_outputter; }; CPPUNIT_NS_END #endif // CPPUNIT_UI_TEXT_TEXTTESTRUNNER_H