一、    准备cppunit,

1、 下载并编译cppunit,这里以1.21.1为例,下载之后如图1所示为:

图1

2、    进入cppunit-1.12.1\src编译VC\VS工程文件,可能刚开始时候没有VS的工程文件sln,此时直接打开VC的工程文件,打开后进行转换,之后就会出现VS的工程文件,如下图2所示:

图2

3、    编译之后即会在目录cppunit-1.12.1\lib下产生cppunit所需的动态库,如下图3所示:

图3

编译完cppunit之后就可以使用它进行单元测试了,

二、    一个简单的cppunit例子,

1、    先创建一个“test_UT”工程,如下图4所示:

图4

在该工程包含一个CCaculater类,在该类中共有下列四个成员函数:
    double Add(double dNum1, double dNum2);
    double Sub(double dNum1, double dNum2);
    double Mult(double dNum1, double dNum2);
    double Div(double dNum1, double dNum2);
下面我们就使用cppunit对CCaculater类进行测试:
2、    新建一个测试工程“cppunit_Test_UT”对上面的“test_UT”进行测试,一般情况下不要将测试工程和被测试的工程放在一个工程里,因为这样的测试对被测试的工程具有侵害性。过程如下图5所示:

图5

该工程可以根据自己需要进行选择,这里选择Win32的Win32 Console Application工程,如下图6所示:

图6

同时,该工程也不选择与编译头文件,故不要勾选此项,如下图7所示:

图7

3、    创建之后的工程结构为如下图8所示:

图8

4、    如果要在工程“cppunit_Test_UT”中使用cppunit对被测工程“test_UT”进行测试,则需要在测试工程工程“cppunit_Test_UT”中配置cppunit的头文件和库文件的路径。过程如下:
(1)在测试工程“cppunit_Test_UT”的项目名中右键单击,在弹出的菜单中选择 属性”Properties”,如下图9所示

图9

(2)在测试工程“cppunit_Test_UT”中配置头文件路径,在弹出的窗体中,选择”Configuration Properties”=>”C/C++”=>”General”,单击右边的窗口的”Additional Include Directories”,如下图10中的红色2所标之处,在弹出的窗口中(下图9中3所示)点击,即可选择cppunit的include目录,需要注意:目录需要选择到cppunit-1.12.1\include,例如cppunit-1.12.1放在了C盘那文件目录就是E: \cppunit-1.12.1\include

图10

(3)在测试工程“cppunit_Test_UT”中配置动态库的路径,方法与(2)相似,把cppunit-1.12.1下面的lib文件夹加入即可,例如cppunit-1.12.1放在了C盘那文件目录就是E: \cppunit-1.12.1\lib,如下图11所示:

图11

(4)在测试工程“cppunit_Test_UT”中添加所需要使用的动态库名称cppunitd.lib testrunnerud.lib,方法如图12所示

图12

配置完成,点击确定即可。
1、    将被测试的类添加到测试工程中,依次添加被测是类的头文件和源文件,方法如下图13所示:

图13

如果添加头文件,则选择”Header Files”,如果添加源文件则选择“Source Files”,在弹出的窗口中,把被测试类的文件选择进来,如图14选择头文件(其他文件的添加的方式也是如此),如图14,在弹出的窗口中到被测试的“test_UT”工程下面把Calculater.h选择进来。

图14

选择完成之后,如图15所示,被测试工程“test_UT”中的被测试类Calculater的”Calculater.cp”和”Calculater.h”文件已经添加到了测试工程”cppunit_Test_UT”中,

图15

6、    在测试工程“cppunit_Test_UT”中,为被测试类Calculater添加测试类CTest_Calculater,需要注意的是:所有的测试类都必须继承自CppUnit::TestFixture,因此需要为该测试类添加此基类,如下图16所示:

图16

如果弹出基类不存在的提示,则选择是即可,如下图17所示:

图17

7、    修改测试类的头文件“Test_Calculater.h”;
(1)中新包含两个头文件:
#include <cppunit/extensions/HelperMacros.h>//CPPUNIT使用
#include "../test_UT/Caculater.h"//测试类CCaculater使用
(2)类的声明中添加cppunit的测试宏CPPUNIT_TEST_SUITE、CPPUNIT_TEST、CPPUNIT_TEST_SUITE_END,每添加一个测试函数都需要用宏CPPUNIT_TEST声明一下。
(3)在该类中添加类CCaculater的四个测试函数,
添加完成之后的头文件如下图所示:

#pragma once
#include <cppunit/extensions/HelperMacros.h>
#include "../test_UT/Caculater.h"
class CTest_Calculater :
public CppUnit::TestFixture
{
CPPUNIT_TEST_SUITE(CTest_Calculater);
CPPUNIT_TEST(Test_Add);
CPPUNIT_TEST(Test_Sub);
CPPUNIT_TEST(Test_Mult);
CPPUNIT_TEST(Test_Div);
CPPUNIT_TEST_SUITE_END();
public:
void setUp(){   }
void tearDown(){}
void Test_Add(void);
void Test_Sub(void);
void Test_Mult(void);
void Test_Div(void);
public:
CTest_Calculater(void);
~CTest_Calculater(void);
private:
bool IsEqual(double dNum1, double dNum2);
};

8、     在测试类的cpp文件的开头包含如下的宏定义:
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CTest_Calculater,"Test_Calculater");
添加完测试函数和上述宏之后的测试类源文件为:

#include "Test_Calculater.h"
CPPUNIT_TEST_SUITE_NAMED_REGISTRATION(CTest_Calculater,"Test_Calculater");
CTest_Calculater::CTest_Calculater(void)
{
}
CTest_Calculater::~CTest_Calculater(void)
{
}
void CTest_Calculater::Test_Add(void)
{
CCaculater cc;
CPPUNIT_ASSERT_EQUAL(true,IsEqual(3,cc.Add(1,2)));
}
void CTest_Calculater::Test_Sub(void)
{
CCaculater cc;
CPPUNIT_ASSERT_EQUAL(true,IsEqual(3,cc.Sub(5,2)));
}
void CTest_Calculater::Test_Mult(void)
{
CCaculater cc;
CPPUNIT_ASSERT_EQUAL(true,IsEqual(10.0,cc.Mult(5,2)));
}
void CTest_Calculater::Test_Div(void)
{
CCaculater cc;
CPPUNIT_ASSERT_EQUAL(true,IsEqual(3,cc.Div(6,2)));
}
bool CTest_Calculater::IsEqual(double dNum1, double dNum2)
{
bool bRes = false;
bRes = ((dNum1 - dNum2) < 0.000001)&& ((dNum1 - dNum2) > -0.000001);
return bRes;
}

9、     工程中包含main函数的文件中,添加如下头文件
#include "stdafx.h"
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
#include <conio.h>
并仿照下面的代码注册并运行测试用例:

// cppunit_Test_UT.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <cppunit/extensions/TestFactoryRegistry.h>
#include <cppunit/ui/text/TestRunner.h>
#include <conio.h>
int _tmain(int argc, _TCHAR* argv[])
{
CppUnit::TextUi::TestRunner runner;
//test Calculater
CppUnit::TestFactoryRegistry &Rg_Test_Calculater=  CppUnit::TestFactoryRegistry::getRegistry("Test_Calculater");//这里“Test_Calculater”就是在“Test_Calculater.cpp”文件中开头的宏里面所定义的识别符号
runner.addTest(Rg_Test_Calculater.makeTest());
runner.run();
system("pause");
return 0;
}

10、    运行测试工程,可看到如下测试结果

VS系列IDE(2005、2008等)下使用cppunit的方法及使用示例相关推荐

  1. 《MSDN WebCast网络广播系列讲座2005年全集 更新完成》

    <MSDN WebCast网络广播系列讲座2005年全集 更新完成>(MSDN WebCast)[ISO] eMule资源 下面是用户共享的文件列表,安装eMule后,您可以点击这些文件名 ...

  2. iis6上安装PHP5.3.2及连接到SQL Server 2005/2008的设置(原创)

    iis6上安装PHP5.3.2及连接到SQL Server 2005/2008的设置(原创) 新增一台win2003 server系统的服务器.以前其他的服务器上使用php5.0/5.1,数据库是SQ ...

  3. Jetbrain系列IDE设置

    JetBrain公司很强,以后IDE渐渐变成这一家独大的场面.此公司IDE确实好用,堪比VS(虽然还差一点). JetBrain系列IDE包括很多,如webstorm,pycharm,phpstorm ...

  4. 监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet - 邀月 - 博客园

    邀月工作室 监控 SQL Server (2005/2008) 的运行状况--来自微软TetchNet 原文地址: http://technet.microsoft.com/zh-cn/library ...

  5. SQL Server 2000 + 2005 + 2008 + 2008R2,完全可以共存

    http://www.aspku.com/database/mssql/32484.html 实践证明,SQL Server 2000 + 2005 + 2008,完全可以共存,注意区别 (1)只要实 ...

  6. mysql 5.5 目录_Windows Server 2008 R2下修改MySQL 5.5数据库目录

    说明: 操作系统:Windows Server 2008 R2 MySQL版本:5.5.25a MySQL程序安装目录:D:\Program Files\MySQL\MySQL Server 5.5 ...

  7. SQL Server 2005/2008 图形界面(SQL Server Management Studio Express)

    SQL Server 2005/2008 图形界面(SQL Server Management Studio Express)2009年03月25日 星期三 18:28SQL 2005 新建数据库 S ...

  8. NTP-Windows 2008和win7下开启网络对时方法

    [转自]http://www.yooan.net/a/huiyuanrizhi/2013/0710/78595.html Windows 2008和win7下开启网络对时方法 1.启用 NTPServ ...

  9. Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站

    Windows Server 2008 R2 下配置证书服务器和HTTPS方式访问网站 http://www.cnblogs.com/zhongweiv/archive/2013/01/07/http ...

最新文章

  1. [附下载]英特尔中国研究院携手生态伙伴发布《机器人4.0白皮书》
  2. 使用随机数以及扩容表进行join代码
  3. 你会么?图形不正,角度是随机的
  4. 京东云上集市谋定中国农民丰收节交易会 建九江电商产业园
  5. 《系统集成项目管理工程师》必背100个知识点-80项目变更管理在软件项目管理中的主要活动内容...
  6. 算法训练营07-递归使用练习
  7. Tiny6410上安装debian基本系统的过程
  8. java模块_Java 9 揭秘(2. 模块化系统)
  9. [原创]django+ldap+memcache实现单点登录+统一认证
  10. sprint3个人总结
  11. adadelta算法_自适应学习率调整:AdaDelta
  12. 阅读圣经丨筛选上下文与行上下文
  13. linux进程调度时间片算法,进程调度算法–时间片轮转调度算法
  14. 笔记本电脑的计算机配置在哪里可以找到,笔记本电脑在哪里看配置
  15. JEOL即日起推出ECZ Luminous全新高分辨率核磁共振系统
  16. vb可以开发用c语言,c语言和vb语言的区别是什么?_后端开发
  17. IE浏览器卡死的问题
  18. Datawhale组队学习周报(第046周)
  19. 如何设置在电脑屏幕和显示器屏幕显示不同的画面窗口
  20. android平板打电话,四款可接打电话平板电脑推荐

热门文章

  1. 科普:Windows下Netcat使用手册
  2. 消消乐实现下坠_手把手教你如何实现iOS消消乐小游戏Demo
  3. python 渐变色柱形图_Python利用imshow制作自定义渐变填充柱状图(colorbar)
  4. gson java 对象_Gson把json串转换成java实体对象
  5. 小孔成像实验探究的软件_小孔成像法观察日食
  6. dvd打开显示服务器失败,9g、10g和11G PowerEdge服务器未启动的e1000故障安全错误
  7. 类写了package java命令出错_java/javac命令行如何同时引用多个包;错误 TypeError: 'JavaPackage' object is not callable 的含义...
  8. python链表结构_CodeSalt | Python数据结构的实现 — 链表
  9. uniapp小程序的getsysteminfo_Typecho小程序:Pisces-Mini-Program
  10. 在linux下磁盘挂在操作,linux下挂载磁盘操作