技术开发 频道

VS2005下使用CPPUNIT进行单元测试

  2. 使用

  参考:

  CppUnit测试框架入门 http://www.vckbase.com/document/viewdoc/?id=1258

  Unit testing with CPPUnit http://www.codeproject.com/KB/library/Using_CPPUnit.aspx

  visual studio 2005 wizard for cpp unit http://www.nabble.com/visual-studio-2005-wizard-for-cpp-unit-td4809724.html

  3. 框架

  本节把CPPUNIT的框架分为三个部分进行简单介绍。

  1) 测试对象族

  CPPUNIT的测试对象的类关系图:

  Test:所有测试对象类的抽象基类,主要是定义run方法和统计子对象个数和查找遍历子对象的方法;

  TestFixture:该类非常简单,只定义了两个方法setUp和tearDown,作为测试对象的准备和拆除方法,一般用户编写的测试类都直接继承它;

  TestComposite、TestLeaf:根据设计模式中组合模式而设计的两个类,都继承自Test;

  TestSuite:具体化了TestComposite的内容存储方式、添加子对象接口等等。该类对象包含了若干测试对象,作为测试对象的容器,而且可以嵌套;

  TestRunner: 控制测试对象的构造和测试对象执行的类;

  TestCase: 定义了一个测试对象要实现的具体接口,同时继承TestFixture的setUp和tearDown;

  接口

  TestCaller: 使用了设计模式中的策略模式,作为测试对象的最终封装类,提供了测试运行的策略,在测试执行中扮演了重要的角色。它是一个模板类。

  2) 信息收集与显示族

  CPPUNIT的测试信息收集与显示的类关系图

  Outputter:是所有测试输出类的抽象基类,定义了write方法;

  CompilerOutputter:以编译器信息类似方式输出测试信息,使用TestResultCollector获取测试信息;

  TextOutputter:以文本流的方式输出测试信息,同样使用TestResultCollector获取测试信息;

  TestListener:以设计模式中观察者模式定义了Observer所应该具有的从TestResult获取测试步骤信息的方法;

  TestSuccessListener:实现了TestListener接口,同时继承了SynchronizedObject了从而具有线程安全性;

  SynchronizedObject:该类实现了lock和unlock操作;

  ExclusiveZone:使用SynchronizedObject进行了临界区的加锁和解锁操作;

  TestResult:这个测试信息的收集者,在观察者模式中扮演Subject角色,是它把测试的各个步骤的信息通知到所有Listener对象的。

  3)测试对象管理族

  CPPUNIT测试对象管理类关系图

  TestFactory:运用了设计模式中工厂设计模式,这里只定义了一个makeTest方法,是一个抽象基类;

  TestSuiteFactory:该类继承自TestFactory,而且是模板类,是生成TestSuite对象的工厂;

  TestFactoryRegistry:管理TestFactory对象的类(这里继承自TestFactory个人感觉有点不太恰当);

  AutoRegisterSuite:模板类,自动把特定的TestSuiteFactory对象注册到TestFactoryRegistry对象;

  TestSuiteBuilderContextBase、TestSuiteBuilderContext:用于构建测试对象的类,详细见代码分析部分。

0
相关文章