一、测试前的说明:
  1、对Fixture的一个测试函数转变成一个测试用例,需要生成一个CppUnit::TestCaller的对象。
  有时可能运行一个Fixture的多个测试函数,甚至多个Fixture。CppUnit中把这种同时运行的测试案例的集合称为TestSuite。
  而TestRunner则运行测试用例或者TestSuite,具体管理所有测试案例的生命周期,目前提供了一下3类TestRunner:
  (1) CppUnit::TestUi::TestRunner//文本方式的TestRunner
  (2) CppUnit::QtUi:: TestRunner//Qt方式的TestRunner
  (3) CppUnit::MfcUi:: TestRunner//MFC方式
  二、测试分类
  1、不含宏的文本方式测试
  2、含宏的文本方式测试
  3、基于GUI的含宏的MFC的测试方式
  三、测试步骤
  1、不含宏的文本测试
  需包含 cppunitd_dll.dll、cppunitd_dll.lib库。
  文本测试,需要文本方式的TestRunner 如:CppUnit::TestUi::TestRunner。
  Step1:首先完成测试函数的编写,测试类需要继承CppUnit::TestFixture,此类中有2个虚函数:void setup()和void teardown();
  void setup()  完成初始化工作;
  void teardown()  完成收尾的清理工作;
  子类需实现这2个函数。
  Step2:编写测试类的测试函数如testAdd();
  Step3:编写被测试对象函数。
  示例代码如下:


main.cpp
#include "MathTest.h"
#include "cppunit/TestSuite.h"
#include "cppunit/ui/text/TestRunner.h"
#include "cppunit/TestCaller.h"
#include <iostream>
using namespace std;
#pragma comment (lib, "cppunitd_dll.lib")
int main()
{
CppUnit::TextUi::TestRunnerrunner;
CppUnit::TestSuite*suite = new CppUnit::TestSuite();
//添加一个测试用例
suite->addTest(newCppUnit::TestCaller<MathTest>("testAdd",&MathTest::testAdd));
//指定运行TestSuite
runner.addTest(suite);
//开始运行,自动显示测试进度和测试结果
runner.run("",true);
return 0;
}
MathTest.h
#include "cppunit/TestFixture.h"
class MathTest:public CppUnit::TestFixture
{
public:
//初始化函数
void setUp();
//清理函数
voidtearDown();
//测试加法的测试函数
voidtestAdd();
protected:
intm_value1,m_value2;
};
MathTest.cpp
#define MATHTEST_H
#ifdef MATHTEST_H
#include "MathTest.h"
#include "cppunit/TestAssert.h"
#endif
void MathTest::setUp()
{
m_value1 = 2;
m_value2 = 3;
}
void MathTest::tearDown()
{
}
void MathTest::testAdd()
{
int ret =m_value1 + m_value2;
CPPUNIT_ASSERT(ret== 5);
}