进行大型软件项目开发时,一定会遇到各个功能的测试问题,设计一个好的解决方法往往能够起到事半功倍的效果。本文以计算机图形学软件工程项目为例,设计出一个简单的测试方案。

  一个大的工程往往是由若干个功能串联起来的,每个功能好都要有相应的测试代码,而图形学工程好的测试方法是将算出的结果显示出来。如果直接将大量的测试代码加到模块中,代码会显得比较臃肿难看,影响了程序可阅读性。如果测试完立刻删掉这些测试的代码又很危险,因为测试代码在未来很长一段时间内,都可能会被再次用到。

  很多测试代码都拥有一定的相似性,本文所涉及到的测试代码主要分为两个大的步骤:一个是运行驱动,另外一个是显示。因而,抽取出测试接口Test包含了这样两个纯虚方法(C++语言)。

class Test
{
public:
 virtual void Run()=0;
 virtual void Render()=0;
};


  各个不同功能的测试块都要继承这个接口,例如在我的解决方案里设计出了很多个测试实例类型:
 1:  class ModuleDzy;
 2:  class TestToothPca:public Test
 3:  {
 4:  public:
 5:   TestToothPca(ModuleDzy* module);
 6:   void Run();
 7:   void Render();
 8:  private:
 9:   ModuleDzy* module_;
10:   MeshModel* tooth_;
11:  };


 1:  class Snaxel;
 2:  class ModuleDzy;
 3:  class Contour;
 4:  class TestBoundary:public Test
 5:  {
 6:  public:
 7:   TestBoundary(ModuleDzy* module);
 8:   void Run();
 9:   void Render();
10:  private:
11:   ModuleDzy* module_;
12:   MeshModel* tooth_;
13:   std::vector<Segment3f> cross_;
14:   Snaxel* boundary_[30];
15:   Contour* contour_;
16:  };