TestCaller.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:2k
源码类别:

模拟服务器

开发平台:

C/C++

  1. #ifndef CPPUNIT_TESTCALLER_H
  2. #define CPPUNIT_TESTCALLER_H
  3. #ifndef CPPUNIT_GUARDS_H
  4. #include "Guards.h"
  5. #endif
  6. #ifndef CPPUNIT_TESTCASE_H
  7. #include "TestCase.h"
  8. #endif
  9. /* 
  10.  * A test caller provides access to a test case method 
  11.  * on a test case class.  Test callers are useful when 
  12.  * you want to run an individual test or add it to a 
  13.  * suite.
  14.  * 
  15.  * Here is an example:
  16.  * 
  17.  * class MathTest : public TestCase {
  18.  *         ...
  19.  *     public:
  20.  *         void         setUp ();
  21.  *         void         tearDown ();
  22.  *
  23.  *         void         testAdd ();
  24.  *         void         testSubtract ();
  25.  * };
  26.  *
  27.  * Test *MathTest::suite () {
  28.  *     TestSuite *suite = new TestSuite;
  29.  *
  30.  *     suite->addTest (new TestCaller<MathTest> ("testAdd", testAdd));
  31.  *     return suite;
  32.  * }
  33.  *
  34.  * You can use a TestCaller to bind any test method on a TestCase
  35.  * class, as long as it returns accepts void and returns void.
  36.  * 
  37.  * See TestCase
  38.  */
  39. template <class Fixture> class TestCaller : public TestCase
  40.    REFERENCEOBJECT (TestCaller)
  41.    typedef void             (Fixture::*TestMethod)();
  42.     
  43. public:
  44.                             TestCaller (std::string name, TestMethod test)
  45.                             : TestCase (name), m_fixture (new Fixture (name)), m_test (test)
  46.                             {}
  47. protected:
  48.     void                    runTest () 
  49.                             { (m_fixture.get ()->*m_test)(); }  
  50.     void                    setUp ()
  51.                             { m_fixture.get ()->setUp (); }
  52.     void                    tearDown ()
  53.                             { m_fixture.get ()->tearDown (); }
  54. private:
  55.    TestMethod               m_test;
  56.    std::auto_ptr<Fixture>   m_fixture;
  57. };
  58. #endif