单元测试作业指导书(一)

2008-04-09 03:58:11来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

  这是我以前任项目经理时,编写的关于单元测试方面的作业指导书,针对多种开发环境叙述怎么进行单元测试以及环境配置,现在整理了一下。应该对大家有所帮助。

  这是第一部分,主要针对C和C 项目的(包括了Windows环境和Linux环境),下部分将针对Java及J2EE项目。

  1. 目的

  为了减少代码中的错误数量, 减少调试所花的时间和精力, 改善软件质量, 减少开发和维护的时间和成本。

  2. 适用范围

  适用于C及C 的所有产品。

  3. 适用内容

  3.1 C 标准

  3.1.1测试环境使用Visual C ,Windows窗口应用程序

  3.1.1.1前题:使用CppUnit1.6.2版,解压后,路径为x:\\cppunit-1.6.2;

  在工程文件中配置测试框架使用环境:加入执行头文件的路径x:\\cppunit-1.6.2\include,加入导入库文件的路径x:\\cppunit-1.6.2\lib;

  配置DEBUG(测试)版环境:

  加入需要链接的静态测试框模块testrunnercd.lib(运行测试用例的选择对话框)和cppunitcd.lib(测试框架);

  加入测试Add-ins,库名为x:\\cppunit-1.6.2\lib\TestRunnerDSPlugInD.dll;

  在Project Settings/C /C Language中启用RTTI;

  3.1.1.2建立测试用例:

  1、以类名加前辍“Test”命名测试单元文件名,比如“CMabString”类的类文件名为MabString.cpp,则测试单元文件命名为TestMabString.cpp;

  2、加入测试框架头文件以及要测试的单元头文件,以TestMabString为例:

  头文件:testmabstring.h #ifndef CPP_UNIT_TestNode_H
#define CPP_UNIT_TestNode_H
//包含测试框架的头文件
#include <cppunit/TestCase.h>
#include <cppunit/extensions/HelperMacros.h>
//包含被测试单元的头文件
#include "mabstring.h"
//派生测试框架的测试用例类
class TestMabString : public CppUnit::TestCase
{
 //定义测试用例列表,此列表将出现在运行测试用例的选择对话框中
 CPPUNIT_TEST_SUITE( TestMabString );
 CPPUNIT_TEST( FindByName );
 CPPUNIT_TEST_SUITE_END();

 protected:
 //
 CMabString m_MabStr;
 public:
  //用例初始化,可作为桩函数
  void setUp ();
  //用例析构
  void tearDown();
 protected:
  //测试用例
  void FindByName (void);
};

#endif

类文件:testmabstring.cpp

#include "TestMabString.h"
#include "iostream.h"
#include "strstrea.h"

//注册本测试单元

CPPUNIT_TEST_SUITE_REGISTRATION( TestMabString );

//定义测试用例

void TestMabString::FindByName ()
{
 //功能性测试,属黑盒测试
 //normal test
 //条件及错误测试,属白盒测试
 //extra test,
 //例外测试,属白盒测试
 //exception test,

 bool bRet=false;
 try{
  //put the exception code here...
 }
 //catch(CXXX& e)
 catch(...)
 {
  bRet=true;
 }
 CPPUNIT_ASSERT(bRet);
 //由于并不能够执行所有单元测试应该执行的路径,比如CMabString是从CString
 //类中派生出来的,而可能CMabString中的Find只简单调用了CString中的Find方法,//所以并不需要测试;
 //在此处说明所有不用测试的路径;
 //other test, see the ...
}

void TestMabString::setUp ()
{
 //开始测试前的初始代码
 m_pNode=new Node();
}

void TestMabString::tearDown()
{
 //测试结束代码
 if(m_pNode)
  delete m_pNode;
}

  3、在启动程序中加入以下代码,以便运行“测试用例选择”对话框: #ifdef _DEBUG

//包括测试头文件

#include <msvc6/testrunner/TestRunner.h>

#include <cppunit/extensions/TestFactoryRegistry.h>

static AFX_EXTENSION_MODULE extTestRunner;

#endif



//以下为测试代码,此部分测试不会出现在发布版中

#ifdef _DEBUG

TestRunner runner;

runner.addTest ( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );

runner.run ();

#endif
  4、制作发行版

  发行版需要做以下工作:

  将Project的属性设置为Release(这将自动去除_DEBUG的声明);

  从工程项目中去掉测试文件(即带有test前辍的文件);

  3.1.2测试环境使用Visual C ,Windows非窗口应用程序

  3.1.2.1前题:使用CppUnit1.6.2版,解压后,路径为x:\\cppunit-1.6.2;

  在工程文件中配置测试框架使用环境:加入执行头文件的路径x:\\cppunit-1.6.2\include,加入导入库文件的路径x:\\cppunit-1.6.2\lib;

  配置DEBUG(测试)版环境:

  加入需要链接的静态测试框模块cppunitcd.lib(测试框架);

  在Project Settings/C /C Language中启用RTTI;

  3.1.2.2建立测试用例:

  1、以类名加前辍“Test”命名测试单元文件名,比如“CMabString”类的类文件名为MabString.cpp,则测试单元文件命名为TestMabString.cpp;

  2、加入测试框架头文件以及要测试的单元头文件,以TestMabString为例:

  头文件:testmabstring.h

  3、测试示例同上;

  3.2 C标准

  3.2.1测试环境使用gcc,Linux非窗口应用程序

  前题:使用check0.8.0版,解压后,路径为/xx/check-0.8.0;

  配置测试框架使用环境(我建议采用标准组织推荐的使用Autoconf和Automake来生成配置文件configure和Makefile,因为使用它们可以建立符合国际标准的configure脚本 和Makefile文件,并且可以有效的建立压缩包和方便分发必需的文件(也方便在发行版中去除测试用例文件):

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:单元测试作业指导书(三)

下一篇:单元测试作业指导书(四)