一、单元测试与CPPUNIT简介

  几乎每个开发人员都写过测试代码,但是往往这些代码不系统,也没有良好的管理,同时在测试代码编写过程中也有很多重复的劳动,比较繁琐。在一个软件开发过程中,往往会进行很多修改,迭代开发的模型随处可见,如何验证程序的功能、性能和结构是否符合要求是一项重要的工作

  单元测试是属于白盒测试和结构性测试,一般由开发人员开展,当然如果有好的测试工具支持,测试人员甚至最终用户都可以参与。单元测试框架是编写和运行单元测试的软件工具,用来构建测试、运行测试、报告测试结果。对于C/C++开发,比较著名的收费单元测试工具是C++ Test,免费开源的则是CPPUNIT。

  CPPUNIT是基于 LGPL 的开源项目,最初版本移植自 JUNIT ,是一个非常优秀的开源测试框架。CPPUNIT和 JUNIT 一样主要思想来源于极限编程。主要功能就是对单元测试进行管理,并可进行自动化测试。CPPUNIT设计遵循很多设计模式,代码结构也相对好理解。

  二、CPPUNIT安装、使用和框架

  1. 安装

  CPPUNIT的主页是http://sourceforge.net/projects/cppunit/,从这里可以获取它的源代码cppunit-1.12.1.tar。安装过程如下:

  1).解压 cppunit-1.12.0.tar.gz到C:\cppunit-1.12.1;

  2).打开src/CppUnitLibraries.dsw,如果是VC 7及以上版本,会有一个对话框询问是否将工程转换成更高版本,选择“Yes to all”进行转换;

  3).打开“Build”菜单,选择“Batch Build...”,弹出“Batch Build...”对话框后点击“Select All”,然后Build。

  a.链接过程中会报错:

  error C3505: cannot load type library '{80CC9F66-E7D8-4DDD-85B6-D9E6CD0E93E2}'

  出错的文件是:src\msvc6\testrunner\MsDevCallerListCtrl.cpp。这是由于使用VC 8.0编译的缘故,需要修改一下它的源码,打开该文件,找到出错行(#67),将其替换为:

#if _MSC_VER >= 1400    // VC++ 8 or more
  //The following #import imports EnvDTE based on its LIBID.
  #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("8.0") lcid("0") raw_interfaces_only named_guids
  //The following #import imports EnvDTE80 based on its LIBID.
  #import "libid:1A31287A-4D7D-413e-8E32-3B374931BD89" version("8.0") lcid("0") raw_interfaces_only named_guids
  #else // vc7
  #import "libid:80cc9f66-e7d8-4ddd-85b6-d9e6cd0e93e2" version("7.0") lcid("0") raw_interfaces_only named_guids
  #endif

  b.另外还有一个错误:error C1189: #error :  This add-in is for VC++ 6.0 only。发生这个错误的是工程“DSPlugIn”,这只是个插件,没有也不影响CPPUnit的使用,因此可以无视这条错误。再次编译,可以从lib文件夹中找到所有的静态库文件及动态库文件。

  4).将include和lib文件夹加入到VC++的环境中。打开:Tools|Options|Projects and Solutions|VC++ Directories,将这两个文件夹的路径分别加入到Include files和Library files中。最好再将lib文件夹加入到系统环境变量PATH中,这样就不用再将其中的动态链接库拷到工程目录下而直接运行单元测试了。至此,CPPUnit的编译安装就完成了。

  5).使用CPPUnitProjectWizard向导创建支持使用CPPUnit的测试类的Visual Studio 2005项目,用这个向导生成的代码,只是生成一个动态库,有DllPlugInTesterd_dll.exe来调取这个动态库测试,个人感觉用处不大。

  安装向导

  a. 下载 CPPUnitProjectWizard

  http://cppunit.sourceforge.net/cppunit-wiki/CppUnitVisualStudio2005Wizard?action=AttachFile&do=get&target=CPPUnitProjectWizard.7z

  b. 复制文件

  CPPUnitProjectWizard.vsdir  - 为向导命名

  CPPUnitProjectWizard.vsz    - 让VS8知道从哪里找到向导

  到您的Visual Studio 8安装目录下的 VCProjects 文件夹中,C:\Program Files\Microsoft Visual Studio 8\VC\vcprojects。

  c. 把整个CPPUnitProjectWizard解决方案文件夹复制到您的Visual Studio 8安装目录下的VCWizards文件夹中。

  比如,我放在c:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\CPPUnitProjectWizard\CPPUnitProjectWizard

  或者,也可以放在你想放置的其它地方,然后编辑CPPUnitProjectWizard.vsz,定义参数 ABSOLUTE_PATH

  Param="ABSOLUTE_PATH = c:\Program Files\Microsoft Visual Studio 8\VC\VCWizards\CPPUnitProjectWizard\CPPUnitProjectWizard"

  d. 该项目需要定义环境变量 CPPUNITDIR

  比如,我的环境变量 CPPUNITDIR= D:\cppunit-1.12.1

  最后,修改 环境变量 %PATH%,在PATH路径中,增加 %CPPUNITDIR%/lib,以便程序加载时能找到 cppunit_dll.dll

  e. 在开发环境中,设置好Include/Lib路径

  %CPPUNITDIR%\Include

  %CPPUNITDIR%\LIB

在VS2005下搭建和使用CppUnit相关推荐

  1. centos7 下搭建git服务器

    总的来说,搭建git和svn形式差不多 1.首先要在服务器安装git环境,创建用户密码和仓库等 2.然后个人主机(基本是window)安装git客户端 3.将个人主机客户端的秘钥写到git服务器的一个 ...

  2. Linux (CentOS 7 )下搭建局域网SVN服务器+SVN权限配置

    准备 公司内部需要配置局域网SVN,需要在在内部虚拟机服务器搭建,搭建过程做个记录,供参考. 注:如果条件允许,尽量在windows下搭建svn服务器,很省事,尤其是权限配置非常方便又易懂,效果相同 ...

  3. 如何在Mac环境下搭建svn服务器端环境

    为什么80%的码农都做不了架构师?>>>    在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境.在Mac环境下,由于Mac自带了svn的服务器端和客户端功 ...

  4. Linux下搭建Lotus Domino集群

    Linux下搭建Lotus Domino 集群 本文内容是Linux平台下Lotus Domino服务器部署案例(http://chenguang.blog.51cto.com/350944/1334 ...

  5. 在mac下搭建java开发环境

    刚刚从windows系统转到使用mac系统,感觉不是特别熟悉,需要一定的适应时间.下面简单介绍一下mac下搭建基本的java开发环境. 1.安装jdk 安装jdk1.7后,发现不需要进行环境变量配置, ...

  6. Ubuntu下搭建postgresql主从服务器(方法1)

    Ubuntu下搭建postgresql主从服务器(方法1) 安装略 postgresql主服务器: $ vi /etc/postgresql/9.1/main/postgresql.conf 按a或i ...

  7. ubuntu下使用Eclipse下搭建c开发环境

    ubuntu下使用Eclipse下搭建开发环境基本上网上教程一大堆,但是复杂度太大,因为很多教程都是从JDK开始安装一直到最后,而且很多都是从别的linux发行版上弄来的方法,各种编译直接吓死人有木有 ...

  8. Linux 下搭建 WordPress 个人站点

    WordPress是基于在LAMP 环境下搭建.这里用的是CentOS 7 wordpress 对php 和mysql 有版本要求.wordpress版本 4.7.4的 数据库mariadb-5.5. ...

  9. git进入项目目录 windows_Windows下搭建Git服务器

    Windows平台下搭建Git服务器的图文详解及教程 Git没有客户端服务器端的概念,但是要共享Git仓库,就需要用到SSH协议(FTP , HTTPS , SFTP等协议也能实现Git共享,此文档不 ...

最新文章

  1. 将要看的两本书 - Hide From All - ITeye技术网站
  2. JAVA正則表達式小总结
  3. 【软考之路】关于上周参加的软考的几点感想
  4. .Net Core 3.1,这匹黑马,2020年值得所有程序员重视!
  5. oracle9i怎样管理数据,Oracle9i数据库管理员使用大全
  6. 2016/2/13 《计算机系统要素》(The Elements of Computing Systems)读书笔记(1)
  7. C语言练习题 日期天数转换
  8. html运行flash脚本语言,flash课件制作常用的脚本语句
  9. 转载 DM9000的调试
  10. vue项目用electron打包成windows(.exe)桌面应用--操作步骤、填坑方法、基础设置
  11. kubernetes 源码安装1.18.3 (7)部署cni网络
  12. 使用Mockito创建Mcok和Spy
  13. 面试官:“你为什么离开上家公司?”怎么回答?
  14. 2D 动画调整 position 产生的位移问题
  15. bzoj 4403(Lucas定理)
  16. 中国超高分子量聚乙烯UHMWPE市场竞争状况与发展趋势分析报告2022-2028年
  17. node.js中fs.readFile和fs.readFileSync的使用
  18. oracle dba 连不上,Oracle 10g的DBA无法登录解决方案
  19. 大数据技术原理与应用 概念、存储、处理、分析和应用(林子雨)——第八章 Hadoop再探讨
  20. 西门子PLC 硬件标识符 (Hardware ID)基本应用

热门文章

  1. sob攻略超详细攻略_2020云南旅游超详细必看攻略(附带云南美食景点攻略)
  2. 利用css制作3d图片旋转_练习
  3. php 服务器安装,php服务器安装笔记
  4. 没有qpress_MySQL 大数据备份方案之Percona XtraBackup
  5. 帆软报表调用python脚本_帆软报表(finereport)实现自动滚屏效果
  6. python字典是什么的集合_Python中的字典和集合
  7. html页面css代码写在哪里,HTML、CSS代码书写规范
  8. android9 关闭点击动画,在Android app中实现九(n)宫格图片连续滑动效果
  9. python怎么添加ui_如何在Python中创建UI
  10. 模拟人生畅玩版android,模拟人生畅玩版手机版