|
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
|