进行大型软件项目开发时,一定会遇到各个功能的测试问题,设计一个好的解决方法往往能够起到事半功倍的效果。本文以计算机图形学软件工程项目为例,设计出一个简单的测试方案。
一个大的工程往往是由若干个功能串联起来的,每个功能好都要有相应的测试代码,而图形学工程好的测试方法是将算出的结果显示出来。如果直接将大量的测试代码加到模块中,代码会显得比较臃肿难看,影响了程序可阅读性。如果测试完立刻删掉这些测试的代码又很危险,因为测试代码在未来很长一段时间内,都可能会被再次用到。
很多测试代码都拥有一定的相似性,本文所涉及到的测试代码主要分为两个大的步骤:一个是运行驱动,另外一个是显示。因而,抽取出测试接口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: };