javayestome 发表于 2013-1-26 13:45:28

c++ 测试篇

作者:CppExplore 网址:http://www.cppblog.com/CppExplore/在c++的世界里,程序设计的优雅让位于程序的稳定性、健壮性。“好程序是测出来的”这句话在C++领域里得到了充分体现。下面是我在开发中使用的测试方法,抛砖引玉,和大家交流下。
测试期间,关闭对core文件的限制,使用命令:ulimit -c unlimited
(1)开发阶段,使用cppunit维护测试用例。我一般是用于测试解析类、算法类。
从http://sourceforge.net/projects/cppunit/下载最新版本,解压,看安装文档,一般是./configure & make & make install。
下面举例说明我使用cppunit的方法。假设自己的源码位于src目录下,里面有class1.h/class1.cpp/class2.h/class2.cpp。相对src建立平级目录test存放测试工程,为class1/class2分别建立测试类文件testClass1.h/testClass2.h,建立main函数所在文件test.cpp、makefile。
testClass1.h代码如下,testClass2.h类似。
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"class1.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include<iostream>
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/TestRunner.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/TestResult.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/TestResultCollector.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/extensions/HelperMacros.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/BriefTestProgressListener.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/extensions/TestFactoryRegistry.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/TextOutputter.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/CompilerOutputter.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gif#include"cppunit/TestCaller.h"
http://www.blogjava.net/Images/OutliningIndicators/None.gifclasstestClass1:publicCPPUNIT_NS::TestFixture
http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedBlock.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifCPPUNIT_TEST_SUITE(testClass1);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifCPPUNIT_TEST(testCase1);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifCPPUNIT_TEST(testCase2);
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifCPPUNIT_TEST_SUITE_END();
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifpublic:
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gifvirtualvoidsetUp(){}
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gifvirtualvoidtearDown(){}
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifvoidtestCase1()
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.giftestClass1a;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifa.oper..;
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifCPPUNIT_ASSERT_EQAL(a.get..,http://www.blogjava.net/Images/dot.gif);
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif}
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifvoidtestCase2()
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gifhttp://www.blogjava.net/Images/OutliningIndicators/ContractedSubBlock.gif{
http://www.blogjava.net/Images/OutliningIndicators/InBlock.gifCPPUNIT_ASSERT(http://www.blogjava.net/Images/dot.gif==http://www.blogjava.net/Images/dot.gif);
http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockEnd.gif}
http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockEnd.gif};
页: [1]
查看完整版本: c++ 测试篇