cppunit是开源的
cppUnit是xUnit的一个,xUnit来源于JUnit
cppUnit是c++的TDD框架,目的是对c++代码的单元测试进行管理,并进行自动化测试。
TDD是XP思想的一个重要基石。XP思想要求先写测试代码,再写符合测试代码的代码。
cppUnit用以解决以下问题:
测试代码没有很好的维护,每次测试都要重写; 写完代码,心里没底,不知道有多少bug等着; 牵扯的东西太多,导致不敢该代码。单元测试的规则:
注意bug的局部性特征 - 不断总结出现 bug 的原因,对其他代码编写相应测试用例
测试代码先行 - 先写测试代码,然后编写符合测试的代码。至少做到完成部分代码后,完成对应的测试代码
执行回归测试 - 每次编写完成代码,运行所有以前的测试用例,验证对以前代码影响,把这种影响尽早消除。
cppUnit的基本原理
在 CppUnit 中,一个或一组测试用例的测试对象被称为
Fixture (设施)。
Fixture 就是被测试的目标,通常是一个对象或者一组相关的对象。
有了被测试的 fixture,就可以对这个 fixture 的某个功能、某个可能出错的流程编写测试代码,这样对某个方面完整的测试被称为
TestCase(测试用例) 通常写一个 TestCase 的步骤包括:
- 对 fixture 进行初始化; --> setUp()
- 按照要测试的某个功能或者某个流程对 fixture 进行操作; -->testXXX()
- 验证结果是否正确;
- 对 fixture 的及其他的资源释放等清理工作。 -->tearDown()
对 fixture 的所有测试用例可以被封装在一个 CppUnit::
TestFixture
的子类(命名惯例是[ClassName]Test)中。然后定义这个fixture 的
setUp 和
tearDown
函数,为每个测试用例定义一个测试函数(命名惯例是
testXXX)。
通常包含测试用例代码和被测试对象是在不同的项目中。应该在另一个项目(最好在不同的目录)中编写 TestFixture,然后把被测试的对象包含在测试项目中。
对某个类或者某个函数进行测试的时候,这个 TestFixture 可能引用了别的类或者别的函数,为了隔离其他部分代码的影响,应该在源文件中临时定义一些桩程序,模拟这些类或者函数。这些代码可以通过宏定义在测试项目中有效,而在被测试的项目中无效。
CppUnit 中把同时运行的测试案例的集合称为
TestSuite。TestRunner 运行测试用例或者TestSuite,具体管理所有测试用例的生命周期。
TestRunner runs TestSuite or Testcases
Testcase { setUp(); tearDown(); testXXX(); }
阅读(2113) | 评论(0) | 转发(0) |