Menu

[r159]: / trunk / cppunit / include / cppunit / TestCase.h  Maximize  Restore  History

Download this file

129 lines (110 with data), 3.2 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
#ifndef CPPUNIT_TESTCASE_H
#define CPPUNIT_TESTCASE_H
#include <string>
#include <cppunit/Test.h>
#include <cppunit/TestAssert.h>
#include <cppunit/TestFixture.h>
namespace CppUnit {
class TestResult;
/*! \brief A single test object.
*
* This class is used to implement a simple test case: define a subclass
* that overrides the runTest method.
*
*/
/* FIXME: this documentation belongs to proposed class Fixture.
*
* A test case defines the fixture to run multiple tests.
* To define a test case
* do the following:
* - implement a subclass of TestCase
* - the fixture is defined by instance variables
* - initialize the fixture state by overriding setUp
* (i.e. construct the instance variables of the fixture)
* - clean-up after a test by overriding tearDown.
*
* Each test runs in its own fixture so there
* can be no side effects among test runs.
* Here is an example:
*
* \code
* class MathTest : public TestCase {
* protected: int m_value1;
* protected: int m_value2;
*
* public: MathTest (string name)
* : TestCase (name) {
* }
*
* protected: void setUp () {
* m_value1 = 2;
* m_value2 = 3;
* }
* }
* \endcode
*
* For each test implement a method which interacts
* with the fixture. Verify the expected results with assertions specified
* by calling CPPUNIT_ASSERT on the expression you want to test:
*
* \code
* protected: void testAdd () {
* int result = value1 + value2;
* CPPUNIT_ASSERT (result == 5);
* }
* \endcode
*
* Once the methods are defined you can run them. To do this, use
* a TestCaller.
*
* \code
* Test *test = new TestCaller<MathTest>("testAdd", MathTest::testAdd);
* test->run ();
* \endcode
*
*
* The tests to be run can be collected into a TestSuite.
*
* \code
* public: static TestSuite *MathTest::suite () {
* TestSuite *suiteOfTests = new TestSuite;
* suiteOfTests->addTest(new TestCaller<MathTest>(
* "testAdd", testAdd));
* suiteOfTests->addTest(new TestCaller<MathTest>(
* "testDivideByZero", testDivideByZero));
* return suiteOfTests;
* }
* \endcode
*
*
* \see TestResult
* \see TestSuite
* \see TestCaller
*
*/
class TestCase : public Test, public TestFixture
{
public:
TestCase (std::string Name);
//! \internal
TestCase ();
~TestCase ();
virtual void run (TestResult *result);
virtual int countTestCases () const;
std::string getName () const;
std::string toString () const;
//! FIXME: what is this for?
virtual TestResult *run ();
protected:
//! FIXME: this should probably be pure virtual.
virtual void runTest ();
//! Create TestResult for the run(void) method.
TestResult *defaultResult ();
private:
TestCase (const TestCase& other);
TestCase& operator= (const TestCase& other);
private:
const std::string m_name;
};
} // namespace CppUnit
#endif // CPPUNIT_TESTCASE_H
MongoDB Logo MongoDB