王朝网络
分享
 
 
 

配置和使用CPPUnit笔记

王朝other·作者佚名  2006-01-31
宽屏版  字体: |||超大  

一、 配置cppunit的方法编译1. 编译$BASE\src\cppunit\CppUnitLibraries.dsw中的cppunit_dll项目,release版生成cppunit_dll.lib和cppunit_dll.dll,debug版生成cppunitd_dll.lib和cppunitd_dll.dll。这是CPPUnit基本类库。

2. 编译$BASE\src\cppunit\CppUnitLibraries.dsw中的TestRunner项目。release版生成TestRunner.lib和TestRunner.dll,debug版生成TestRunnerd.lib和TestRunnerd.dll。这是使用MFC的图形化界面的类库。

3. 把所有lib文件放置到CommonFiles\Lib目录下面。

4. 把dll文件放到相应的debug和release可执行目录下面。

设置VC1. 在vc的Option中设置cppunit的头文件路径。是$BASE\include目录。

2. 在stdafx.h中添加

#ifndef _DEBUG

#pragma comment(lib, "..\\..\\CommonFiles\\Lib\\cppunit_dll.lib")

#pragma comment(lib, "..\\..\\CommonFiles\\Lib\\TestRunner.lib")

#else

#pragma comment(lib, "..\\..\\CommonFiles\\Lib\\cppunitd_dll.lib")

#pragma comment(lib, "..\\..\\CommonFiles\\Lib\\TestRunnerd.lib")

#endif

因为debug和release版使用的库是不相同的

二、 不使用辅助宏的CPPUnit使用方法新建一个基于对话框的exe程序。

测试类建立一个测试类CPlusTest:

#pragma warning(push, 3)

#include "..\..\cppunit\include\cppunit\testFixture.h"

#include "..\..\cppunit\include\cppunit\testAssert.h"

#pragma warning(pop)

class CPlusTest : public CppUnit::TestFixture

{

public:

CPlusTest();

virtual ~CPlusTest();

void setUp()

{

x = 1;

y = 2;

};

void tearDown()

{

x = 0;

y = 0;

};

void TestEqual1()

{

CPPUNIT_ASSERT(x + y == 4);

};

void TestEqual2()

{

CPPUNIT_ASSERT(x + y == 3);

}

private:

int x;

int y;

};

说明:

测试类一般继承自TestFixture,它用来表示一个测试对象,用来组织测试用例。

在每个测试用例执行之前,其所属类的setUp都会执行;之后,其所属类的tearDown都会执行。对本例而言,运行TestEqual1之前会执行setUp,之后会执行tearDown;运行TestEqual2之前也会执行setUp,之后也会执行tearDown。

CPPUNIT_ASSERT用来判断括号内的值是true或者false。如果true,则表示测试成功;否则表示测试失败。也有一些别的宏可以使用。

主函数在主cpp文件中添加下面包含语句

#pragma warning(push, 3)

#include "..\..\cppunit\include\cppunit\ui\mfc\TestRunner.h"

#include "..\..\cppunit\include\cppunit\testCaller.h"

#include "..\..\cppunit\include\cppunit\testResult.h"

#include "..\..\cppunit\include\cppunit\testSuite.h"

#pragma warning(pop)

在InitInstance添加下面代码,并去掉显示之前对话框的代码

CppUnit::MfcUi::TestRunner runner;

CppUnit::TestSuite suite("test");

CppUnit::TestCaller<CPlusTest> test1("TestEqual1",

& CPlusTest::TestEqual1);

CppUnit::TestCaller<CPlusTest> test2("TestEqual2",

&CPlusTest::TestEqual2);

suite.addTest(&test1);

suite.addTest(&test2);

runner.addTest(&suite);

runner.run();

说明:建立一个名字叫test的test suite。然后建立两个test case,分别名为TestEqual1和TestEqual2,对应的测试函数分别是CPlusTest::TestEqual1和CPlusTest::TestEqual2。

然后将两个测试用例添加到测试suite中。

最后把测试suite添加到runner。此处的runner是一个mfc图形界面的,也可以是文本方式的。

使用图形界面,test suite和test case分别对应着树枝和树叶,runner对应着树根。test suite可以包含别的test suite,runner也可以直接包含test case。

三、 使用辅助宏的CPPUnit使用方法(推荐)上面方法必须在主函数中做大量添加test suite和test case的操作。为了方便使用,CPPUnit提供了一些宏。

测试类的改进在测试类的声明开始添加下面四句

CPPUNIT_TEST_SUITE(CPlusTest);

CPPUNIT_TEST(TestEqual1);

CPPUNIT_TEST(TestEqual2);

CPPUNIT_TEST_SUITE_END();

说明:要在类的最开头,即public前面加上这些语句。该类的TestEqual1和TestEqual2分别作为一个test case放在一个test suite中。该test suite的名称是类的名称,即“CPlusTest”

在对应的cpp文件的开始加上下面语句

CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CPlusTest, "plusTest");

说明:表示添加该类对应的suite(“CPlushTest”)到一个名字是plusTest的test suite。同时plusTest这个test suite会被注册。另外,也可以使用CPPUNIT_TEST_SUITE_REGISTRATION(CPlusTest);将该类对应的suite加入到默认的test suite中(“All Tests”)。

另外只需要包含文件

#include "..\..\cppunit\include\cppunit\extensions\HelperMacros.h"

主函数的改进 主函数中只需要包含TestRunner.h

在InitInstance中只需要具有下面的语句

CppUnit::MfcUi::TestRunner runner;

CppUnit::Test *pSuite =

CppUnit::TestFactoryRegistry::getRegistry("plusTest").makeTest();

runner.addTest(pSuite);

runner.run();

说明:

现在在图形化界面中包含了三层树结构。第一层是plusTest,第二层是CPlusTest,第三层是TestPlus1和TestPlus2。

可以给getRegistry不指定参数使用默认注册的test case,即“All Tests”。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有