Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1707131
  • 博文数量: 607
  • 博客积分: 10031
  • 博客等级: 上将
  • 技术积分: 6633
  • 用 户 组: 普通用户
  • 注册时间: 2006-03-30 17:41
文章分类

全部博文(607)

文章存档

2011年(2)

2010年(15)

2009年(58)

2008年(172)

2007年(211)

2006年(149)

我的朋友

分类: C/C++

2007-12-27 17:40:56

cppunit是开源的
cppUnit是xUnit的一个,xUnit来源于JUnit
cppUnit是c++的TDD框架,目的是对c++代码的单元测试进行管理,并进行自动化测试。
TDD是XP思想的一个重要基石。XP思想要求先写测试代码,再写符合测试代码的代码。
cppUnit用以解决以下问题:
    测试代码没有很好的维护,每次测试都要重写;
    写完代码,心里没底,不知道有多少bug等着;
    牵扯的东西太多,导致不敢该代码。

单元测试的规则:
    注意bug的局部性特征 - 不断总结出现 bug 的原因,对其他代码编写相应测试用例
    测试代码先行 - 先写测试代码,然后编写符合测试的代码。至少做到完成部分代码后,完成对应的测试代码
    执行回归测试 - 每次编写完成代码,运行所有以前的测试用例,验证对以前代码影响,把这种影响尽早消除。


cppUnit的基本原理

    在 CppUnit 中,一个或一组测试用例的测试对象被称为 Fixture (设施)
    Fixture 就是被测试的目标,通常是一个对象或者一组相关的对象。

    有了被测试的 fixture,就可以对这个 fixture 的某个功能、某个可能出错的流程编写测试代码,这样对某个方面完整的测试被称为TestCase(测试用例)
    通常写一个 TestCase 的步骤包括:
  1. 对 fixture 进行初始化;   --> setUp()
  2. 按照要测试的某个功能或者某个流程对 fixture 进行操作;   -->testXXX()
  3. 验证结果是否正确;   
  4. 对 fixture 的及其他的资源释放等清理工作。  -->tearDown()
    对 fixture 的所有测试用例可以被封装在一个 CppUnit::TestFixture 的子类(命名惯例是[ClassName]Test)中。然后定义这个fixture 的 setUptearDown 函数,为每个测试用例定义一个测试函数(命名惯例是 testXXX)。

通常包含测试用例代码和被测试对象是在不同的项目中。应该在另一个项目(最好在不同的目录)中编写 TestFixture,然后把被测试的对象包含在测试项目中。

对某个类或者某个函数进行测试的时候,这个 TestFixture 可能引用了别的类或者别的函数,为了隔离其他部分代码的影响,应该在源文件中临时定义一些桩程序,模拟这些类或者函数。这些代码可以通过宏定义在测试项目中有效,而在被测试的项目中无效。

CppUnit 中把同时运行的测试案例的集合称为 TestSuite。
TestRunner 运行测试用例或者TestSuite,具体管理所有测试用例的生命周期。

TestRunner runs TestSuite or Testcases
Testcase { setUp(); tearDown(); testXXX(); }


阅读(2122) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~