| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- #ifndef CPPUNIT_TESTRUNNER_H
- #define CPPUNIT_TESTRUNNER_H
- #include <cppunit/TestSuite.h>
- #include <string>
- CPPUNIT_NS_BEGIN
- class Test;
- class TestResult;
- /*! \brief Generic test runner.
- * \ingroup ExecutingTest
- *
- * 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:
- * \code
- * #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;
- * }
- * \endcode
- */
- class CPPUNIT_API TestRunner
- {
- public:
- /*! \brief Constructs a TestRunner object.
- */
- TestRunner( );
- /// Destructor.
- virtual ~TestRunner();
- /*! \brief Adds the specified test.
- * \param test Test to add. The TestRunner takes ownership of the test.
- */
- virtual void addTest( Test *test );
- /*! \brief Runs a test using the specified controller.
- * \param controller Event manager and controller used for testing
- * \param testPath Test path string. See Test::resolveTestPath() for detail.
- * \exception std::invalid_argument if no test matching \a testPath is found.
- * see TestPath::TestPath( Test*, const std::string &)
- * for detail.
- */
- virtual void run( TestResult &controller,
- const std::string &testPath = "" );
- protected:
- /*! \brief (INTERNAL) Mutating test suite.
- */
- class CPPUNIT_API WrappingSuite : public TestSuite
- {
- public:
- WrappingSuite( const std::string &name = "All Tests" );
- int getChildTestCount() const;
- std::string getName() const;
- void run( TestResult *result );
- protected:
- Test *doGetChildTestAt( int index ) const;
- bool hasOnlyOneTest() const;
- Test *getUniqueChildTest() const;
- };
- protected:
- WrappingSuite *m_suite;
- private:
- /// Prevents the use of the copy constructor.
- TestRunner( const TestRunner © );
- /// Prevents the use of the copy operator.
- void operator =( const TestRunner © );
- private:
- };
- CPPUNIT_NS_END
- #endif // CPPUNIT_TESTRUNNER_H
|