永发信息网

如何使用cppunit为c++工程做单元测试

答案:1  悬赏:30  手机版
解决时间 2021-03-25 12:59
如何使用cppunit为c++工程做单元测试
最佳答案
学校的项目已经进入到了设计阶段,我参加的是web service的部分。这部分为了和core部分连接所以选择用c++来实现。于是看了一些有关针对c++的单元测试的framework,发现cppunit还是比较简单好用的。第一步:如何安装 (我的运行环境: debian Linux, gcc)cppunit 的安装是相当标准的linux的安装过程a. 下载cppunit的源文件b. 解压缩c. 编译安装程序 $./configure -prefix=/home/me $make $make install这里 -prefix=/home/me的意思是把安装的根目录设置为/home/me(我的私人目录, 我不是管理员所以只好安装到自己的“家“了).安装完成以后头文件存储在/home/me/include,库文件存储在/home/me/lib。因为不是安装在默认的位置所以在编译和连结的时候要指定路径。例如:g++ -g -L/home/me/lib -lcppunit -ldl -I/home/me/include Main.C第二步: 下面我介绍一下个人认为比较实用的测试程序的结构。这个测试类从CppUnit::TestFixture派生,并且由下面的部分组成:a. setUp() 方法 在这个方法里实现一些准备工作,例如生成一些被测类的实列 setUp(){ mc1 = new MyClass(); }b. tearDown() 方法 在这个方法里实现扫尾的工作,例如释放内存 tearDown(){ delete mc1; }c. 测试方法的方法 例如,在被测类里有一个方法叫做:bool operator==(MyComplex &a), 我们要写一个名字叫作test_Equality的方法来测试。 void test_Equality() { CPPUNIT_ASSERT( *mc1 == *mc2 ); CPPUNIT_ASSERT( !(*mc1 == *mc3) ); }CPPUNIT_ASSERT用来判断里面的表达是是否为真。d. 把几个测试方法“打包”为一个suite。 static CppUnit::Test *suite(){ CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite("TMyComplex"); suiteOfTests->addTest(new CppUnit::TestCaller ("testEquality", &TMyComplex::testEquality)); return suiteOfTests; }测试类就是由这些方法组成, 下面是如何运行测试类的主程序: CppUnit::TextUi::TestRunner runner; runner.addTest(TMyComplex::suite()); runner.run(); return 0;测试是由TestRunner来执行的。由于很多的工作都是比较固定的,所以我写了一个Perl脚本,这个脚本可以自动生成一个测试类的框架。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
江苏阳通数控切割机操作视频
可以报警追回不
海晏河清
大学快毕业的时候有多忙了,详细一点
下列命题中:(1)形状相同的两个三角形是全
我家的房子当初建造在距离水井不足一米的地方
不知道何原因,放在那自己就黑屏,怎么都打不
男士衣服穿着打扮类的书籍
电动车电池48V但跑了段路只有46V电池有问题吗
暗黑3的这个武器不是26就能装备吗?为不行?
肌肉的特性是什么
长安4500发动机加油没力一抖一抖是咋回事
找一部中国动漫,女主是警察,男主全是的个混
葆婴公经销商晋升晚宴主持人台词
590P直流调速器弱磁设定
推荐资讯
我想在微博参加网易uu加速器的活动,可是我已
当兵初检过后,还要我去复检,这种情况是初检
.With a expression on her face, she is a
黑店百地上单泰坦符文 还有对线思路
魔兽世界7.25zs为什么不能拿单手剑
中专可以应聘人工智能这方面的工作吗?
现在主流的专业二维动画制作软件是什么?
为什么除了清华北大,所有的大学都被各种黑
2012年买的一块白玉,不知道是不是合成的
鱼缸沙子发黄有霉菌怎么办
餐厅为什么没有4号和7号桌
log以8为底9的对数,乘以log以9为底8的对数,
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?