软件测试驱动开发(TDD)是以测试作为开发过程的中心,他是极限编程的重要组成部分,XUnit是一个基于测试驱动开发的测试框架,其成员很多包括:JUnit,PythonUint等,CppUint是其中一个专门面向c++的测试框架。 在CppUnit中小的测试单元称为测试方法(TestMethod),多个测试方法又可以组成一个测试用例(TestCase),多个测试用例又组成一个测试包(TestSuite) CppUnit提供了两种测试环境,一种基于文本,一种基于GUI,在基于GUI的测试环境中,若测试不成功,进度条显示红色,反之则为绿色。 Vs环境下CppUnit开发的基本流程(MFC方式的TestRunner) 首先在所建工程中App的Instance()中屏蔽掉原有的对话框,代之以CppUnit的GUI,一般为以下形式: CppUnit::MfcUI::TestRunner runner; Runner.addTest(PlusTest::suite());//添加测试 runner.run();//显示UI // PlusTest::suite()该函数返回一个指向CppUnit::Test的指针,这个指针是整个测试的起点,CppUnit::TestFactoryRegistry()根据TestSuite的名称返回TestFactoryRegistry工厂,然后调用工厂里的makeTest()对TestSuite进行组装,这是一个递归调用,将建立起一个树状的测试结构 然后在工程头文件中建立一个PlueTest.h的头文件用以得到工厂并调用MakeTest函数 形式如下: #include "cppunit/extensions/TestFactoryRegistry.h" namespace PlusTest { CppUnit::Test*suite() { CppUnit::TestFactoryRegistry®istry = CppUnit::TestFactoryRegistry::getRegistry("name"); return registry.makeTest(); } } Cpp文件所需头文件为: #include "cppunit/ui/mfc/TestRunner.h" #include "cppunit/extensions/TestFactoryRegistry.h" #include "PlusTest.h" 然后在工程中添加一个类,例如为:CplusTestCase 代码如下: #include <apr.h> #include <cppunit/TestCase.h> #include <cppunit/extensions/HelperMacros.h> #include <unicode/unistr.h> #pragma comment(lib,"icuuc.lib") class CPlusTestCase :publicCppUnit::TestCase { //通过这几个宏将类CPlusTestCase和方法testFind注册到了测试列表中了 //开始创建一个TestSuite(测试包) CPPUNIT_TEST_SUITE(CPlusTestCase); //添加TestCase(测试用例) CPPUNIT_TEST(testFind); //结束创建TestSuite CPPUNIT_TEST_SUITE_END(); public: //!rief Set up context before running a test virtual void setUp();//初始化数据成员 //!Clean up after the test run. virtual void tearDown();//释放清理工作 CPlusTestCase(void); ~CPlusTestCase(void); //测试方法 void testFind();