单元测试作业指导系列讲座之一

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

  这是第一部分,主要针对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;
}


单元测试作业指导系列讲座之一(2)

3、在启动程序中加入以下代码,以便运行“测试用例选择”对话框:#ifdef _DEBUG//包括测试头文件#include #include static AFX_EXTENSION_MODULE e...
  • snowphy
  • snowphy
  • 2004年10月22日 10:19
  • 750

CUnit详解(基于linux下的白盒单元测试)

CUnit是一个对C语言编写的程序进行单元测试的框架,在线文档说它作为一个静态链接库被链接到用户的测试代码中。 它提供了一种简洁的框架来建立测试架构,并提供丰富的断言(Assertion)来测试通用...
  • baiyang20140704
  • baiyang20140704
  • 2015年04月20日 16:36
  • 808

把业务需求转换为IT要求

作为 IT 架构师,您可能经常会发现自己处于进退维谷的境地,前有您的业务目标,后有您的 IT 系统。这两方面都具有规模大、不易改变和灵活性差的特点。制定业务目标的人员和开发系统的人员不一定了解彼此 的...
  • xfworld
  • xfworld
  • 2006年09月05日 14:55
  • 911

北大程序设计实习公开课编程作业,魔兽世界之一:备战

魔兽世界的第一个版本,备战。比较简单。 因为我 take 这个课的时候,课程已经开到第八周了,这些作业已经不能提交。所以该代码没有提交通过 oj 判断,需要大家注意一下。如果以后有人拿此代码交了,没有...
  • buxizhizhou530
  • buxizhizhou530
  • 2015年04月23日 10:26
  • 2237

单元测试指导

单元测试指导 张华( www.51testing.com 顾问, CSAI 理事)( 2004-6-2 )  一、单元测试环境配置测试 1. 网络连接是否正常 2. 网络流量负担是否过重 3. 软件测...
  • SafeF8
  • SafeF8
  • 2004年12月03日 11:45
  • 1037

单元测试指导

单元测试指导 一、单元测试环境配置测试1. 网络连接是否正常2. 网络流量负担是否过重3. 软件测试平台是否可选4. 如果(3),是否在不同的软件测试平台进行软件测试5. 所选软件测试平台的版本(包括...
  • simonhehe
  • simonhehe
  • 2008年02月26日 18:28
  • 608

OpenCL简介-----OpenCL学习(一)

OpenCL (Open Computing Language,开放计算机语言)是一个为异构平台编写程序的框架,此异构平台可由CPU,GPU或其他类型的处理器组成。OpenCL由一门用于编写kerne...
  • XianBT
  • XianBT
  • 2014年02月04日 00:08
  • 3597

【自学C++】魔兽世界之一:备战

学校的C++讲的实在太扯,于是ji
  • u014025300
  • u014025300
  • 2014年04月06日 16:34
  • 5339

【数据科学】《微软亚洲研究院大数据系列讲座》1-大数据研究现状及未来趋势

课程目录: 1.1 什么是大数据 1.2 为什么大数据是当前热点 1.3 新的计算基础设施和工具 1.4 课程简介 1.5 基础设施、机器学习和可视化 1.6 大数据与传统商业智能的区别1...
  • future_todo
  • future_todo
  • 2015年11月19日 17:06
  • 1468

DirectShow系列讲座之一——DirectShow系统概述

流媒体的处理,以其复杂性和技术性,一向广受工业界的关注。特别伴随着因特网的普及,流媒体在网络上的广泛应用,怎样使流媒体的处理变得简单而富有成效逐渐成为了焦点问题。选择一种合适的应用方案,事半功倍。此时...
  • welcome_ck
  • welcome_ck
  • 2004年12月24日 17:06
  • 1255
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:单元测试作业指导系列讲座之一
举报原因:
原因补充:

(最多只允许输入30个字)