一、测试前的说明:
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); } |