| 网站首页 | JAVA文章 | AppServers | Web开发 | 应用开发 | 资源下载 | 论坛
    想学好编程,学好外语很重要  [enadd  2006年12月25日]        
设为首页 加入收藏 联系站长
您现在的位置: 编程笔记网 >> 应用开发 >> CC++ >> 文章正文
使用cppunit为c++工程做单元测试        【字体:
使用cppunit为c++工程做单元测试
作者:-    文章来源:互联网    点击数:    更新时间:2006-4-26


用cppunit做单元测试的结构

学校的项目已经进入到了设计阶段,我参加的是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脚本,这个脚本可以
自动生成一个测试类的框架。

文章录入:enadd    责任编辑:enadd 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
  • 学习笔记——boot

  • 编写另一个printf

  • 在Linux下如何快速搭建安全的…

  • C语言笔记

  • 怎么这个程序不能通过?

  • 请问外部变量和内部变量是什…

  • 缺少gets函数,怎么办?

  • 请问cache 和buff的意思?

  • 一个很莱的C程序

  • 扬声器

  •   网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 管理登录 |