TestCase ,单个测试用例,自定义测试类的父类;
TestSuit ,一组测试用例,由 TestCase 组成;
编写的基本步骤:
1 ,新建工程,设置 RTTI 及多线程 lib ,添加需要的 lib ,如cppunitd.lib TestRunnerd.lib
2 ,从CppUnit::TestCase派生测试类CPlusTestCase;<cppunit/TestCase.h> <CppUnit/extensions/HelperMacros.h> <cppunit/extensions/TestFactoryRegistry.h>
3 ,在CPlusTestCase声明中注册 TestSuit ,表示将函数testAdd加到CPlusTestCase这个 TestSuit 中:
class CPlusTestCase : public CppUnit::TestCase
{
CPPUNIT_TEST_SUITE(CPlusTestCase);
CPPUNIT_TEST(testAdd);
// testAdd是一个自定义的测试函数
CPPUNIT_TEST_SUITE_END();
public:
CPlusTestCase(void);
// 构造在runner.addTest中被调用,而非run () 或执行测试时
~CPlusTestCase(void);
void testAdd(void);
};
4 ,在CPlusTestCase实现文件中注册 TestSuit ,表示将 TestSuit CPlusTestCase注册到 abc 这个组中;
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTestCase, " abc ");
5 ,在程序启动时使用TestRunner添加测试及执行,<cppunit/ui/mfc/TestRunner.h>,如 ( 需要<cppunit/extensions/TestFactoryRegistry.h> ) ;
CppUnit::MfcUi::TestRunner runner;
runner.addTest(CppUnit::TestFactoryRegistry::getRegistry(" abc ").makeTest());
//添加测试
runner.run();//show UI
注意:
1 , cppunit 相应头文件的 #include 需放到 #define new DEBUG_NEW的前面;
2 ,使用相应 lib 的 debug 或 release 版本,碰到过因版本不同而程序执行报错的问题;