Blame include/cppunit/TestFixture.h

Packit 8c9aa0
#ifndef CPPUNIT_TESTFIXTURE_H    // -*- C++ -*-
Packit 8c9aa0
#define CPPUNIT_TESTFIXTURE_H
Packit 8c9aa0
Packit 8c9aa0
#include <cppunit/Portability.h>
Packit 8c9aa0
Packit 8c9aa0
CPPUNIT_NS_BEGIN
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
/*! \brief Wraps a test case with setUp and tearDown methods.
Packit 8c9aa0
 * \ingroup WritingTestFixture
Packit 8c9aa0
 *
Packit 8c9aa0
 * A TestFixture is used to provide a common environment for a set
Packit 8c9aa0
 * of test cases.
Packit 8c9aa0
 *
Packit 8c9aa0
 * To define a test fixture, do the following:
Packit 8c9aa0
 * - implement a subclass of TestCase 
Packit 8c9aa0
 * - the fixture is defined by instance variables 
Packit 8c9aa0
 * - initialize the fixture state by overriding setUp
Packit 8c9aa0
 *   (i.e. construct the instance variables of the fixture)
Packit 8c9aa0
 * - clean-up after a test by overriding tearDown.
Packit 8c9aa0
 *
Packit 8c9aa0
 * Each test runs in its own fixture so there
Packit 8c9aa0
 * can be no side effects among test runs.
Packit 8c9aa0
 * Here is an example:
Packit 8c9aa0
 * 
Packit 8c9aa0
 * \code
Packit 8c9aa0
 * class MathTest : public CppUnit::TestFixture {
Packit 8c9aa0
 * protected:
Packit 8c9aa0
 *   int m_value1, m_value2;
Packit 8c9aa0
 *
Packit 8c9aa0
 * public:
Packit 8c9aa0
 *   MathTest() {}
Packit 8c9aa0
 *
Packit 8c9aa0
 *   void setUp () {
Packit 8c9aa0
 *     m_value1 = 2;
Packit 8c9aa0
 *     m_value2 = 3;
Packit 8c9aa0
 *   }
Packit 8c9aa0
 * }
Packit 8c9aa0
 * \endcode
Packit 8c9aa0
 *
Packit 8c9aa0
 * For each test implement a method which interacts
Packit 8c9aa0
 * with the fixture. Verify the expected results with assertions specified
Packit 8c9aa0
 * by calling CPPUNIT_ASSERT on the expression you want to test:
Packit 8c9aa0
 * 
Packit 8c9aa0
 * \code
Packit 8c9aa0
 * public: 
Packit 8c9aa0
 *   void testAdd () {
Packit 8c9aa0
 *     int result = m_value1 + m_value2;
Packit 8c9aa0
 *     CPPUNIT_ASSERT( result == 5 );
Packit 8c9aa0
 *   }
Packit 8c9aa0
 * \endcode
Packit 8c9aa0
 * 
Packit 8c9aa0
 * Once the methods are defined you can run them. To do this, use
Packit 8c9aa0
 * a TestCaller.
Packit 8c9aa0
 *
Packit 8c9aa0
 * \code
Packit 8c9aa0
 * CppUnit::Test *test = new CppUnit::TestCaller<MathTest>( "testAdd", 
Packit 8c9aa0
 *                                                          &MathTest::testAdd );
Packit 8c9aa0
 * test->run();
Packit 8c9aa0
 * \endcode
Packit 8c9aa0
 *
Packit 8c9aa0
 *
Packit 8c9aa0
 * The tests to be run can be collected into a TestSuite. 
Packit 8c9aa0
 * 
Packit 8c9aa0
 * \code
Packit 8c9aa0
 * public: 
Packit 8c9aa0
 *   static CppUnit::TestSuite *MathTest::suite () {
Packit 8c9aa0
 *      CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite;
Packit 8c9aa0
 *      suiteOfTests->addTest(new CppUnit::TestCaller<MathTest>(
Packit 8c9aa0
 *                              "testAdd", &MathTest::testAdd));
Packit 8c9aa0
 *      suiteOfTests->addTest(new CppUnit::TestCaller<MathTest>(
Packit 8c9aa0
 *                              "testDivideByZero", &MathTest::testDivideByZero));
Packit 8c9aa0
 *      return suiteOfTests;
Packit 8c9aa0
 *  }
Packit 8c9aa0
 * \endcode
Packit 8c9aa0
 * 
Packit 8c9aa0
 * A set of macros have been created for convenience. They are located in HelperMacros.h.
Packit 8c9aa0
 *
Packit 8c9aa0
 * \see TestResult, TestSuite, TestCaller,
Packit 8c9aa0
 * \see CPPUNIT_TEST_SUB_SUITE, CPPUNIT_TEST, CPPUNIT_TEST_SUITE_END, 
Packit 8c9aa0
 * \see CPPUNIT_TEST_SUITE_REGISTRATION, CPPUNIT_TEST_EXCEPTION, CPPUNIT_TEST_FAIL.
Packit 8c9aa0
 */
Packit 8c9aa0
class CPPUNIT_API TestFixture
Packit 8c9aa0
{
Packit 8c9aa0
public:
Packit 8c9aa0
  virtual ~TestFixture() {};
Packit 8c9aa0
Packit 8c9aa0
  //! \brief Set up context before running a test.
Packit 8c9aa0
  virtual void setUp() {};
Packit 8c9aa0
Packit 8c9aa0
  //! Clean up after the test run.
Packit 8c9aa0
  virtual void tearDown() {};
Packit 8c9aa0
};
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
CPPUNIT_NS_END
Packit 8c9aa0
Packit 8c9aa0
Packit 8c9aa0
#endif