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

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

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

时间: 2024-10-31 08:21:05

单元测试作业指导系列讲座之一的相关文章

资深网站运营总监“莫言”的网站运营系列讲座(一)

网站运营 主讲:莫言主题:网站运营系列讲座(一) 讲课记录: 运营一个网站,咱们还是先从自身资源开始谈 自身资源里,包括了人员,资金,你的站所处领域里你对业务的熟悉程度 当然也包括一些硬件资源 类似服务器,或者空间 带宽 这些都是需要你前期考虑好的,并辅助与实施的 这里,要着重提的是你做站一定要选自己熟悉的行业领域 引一句话"不要拿自己的弱项跟人家的强项拼" 选择自己熟悉,或者说正在从事的领域行业来做站这是首选的 还包括你领域里可以整合其他的小范围领域 这些..可以统称为"网

HDwiki系列讲座第九期: 网络广告联盟广告投放技巧

中介交易 SEO诊断 淘宝客 云主机 技术大厅 大家好,很荣幸能担任本次讲座的嘉宾,由于讲座的主题是"网络广告联盟广告投放技巧",所以,我还是要先给大家简单介绍一下什么是网络广告联盟. 下面开始进入主题 一.什么是网络广告联盟 网络广告联盟,又称联盟营销,指集合中小网络媒体资源(又称联盟会员,如中小网站.个人网站.WAP 站点等)组成联盟,通过联盟平台帮助广告主实现广告投放,并进行广告投放数据监测统计, 广告主则按照网络广告的实际效果向联盟会员支付广告费用的网络广告组织投放形式. 网络

qtp自动化测试实践:【软件测试自动化-QTP系列讲座 46】== JScript在QTP中的终极探究

上一次讲座我们简单介绍了下QTP中如何执行javascript,其实说穿了也就是借助QTP的封装方法来进行执行javascript,主要还是想照顾下新手所以简单介绍一下这块内容,可能对一些测试高手们来说不值一提,但是今天这次讲座相信一定会让你眼前一亮,应该可以说本次课程是领先技术讲座的高潮.擦亮你的眼睛,来看如何真正意义上在QTP编辑器中直接执行JAVASCRIPT,并把try catch应用到实际应用中.从此摆脱vbs那种渣一样的错误捕获. 在这之前请允许我来介绍一个组件,它就是MSHTML组

莫言的网站运营系列讲座(二)

网站运营 回顾一做站之前,先做好自身调研自身分析.是否自己具备做站和运营站的综合能力 二,网站运营的关键点:网站制作和运营前的定位,确立后要把核心找准,仔细研究分析和策划并监督实施---也就是 网站赢利模式 三网站的盈利来源你的网站提供的内容和服务,如何做到将服务提升到用户必须接受的地步 今天由于时间关系,可能拖延了..今天会讲的晚点多点 总结站长,运营总监所必须具备的常识和能力 一具有一定电子商务运营的经验,能够给网站从搭建到发展指定各个时期的可行性计划并置身到下层学习相关的一些业务和知识.做

Struts作业指导手册

作者:Junsan Jin 日期:2005-4-4 版本:1.0 信箱:junsan21@126.com ; junnef21@sohu.com 声明:本人保留本文的所有权利. 第一部分:简介Struts开始于2000年3月,是采用Java Servlet/JavaServer Pages技术,开发Web应用程序的开放源码的框架.   采用Struts能开发出基于MVC(Model-View-Controller)设计模式的Java Web前端应用.通常MVC设计模式把一个系统划分为相互协作的三

莫言的网站运营系列讲座(五)

网站运营 今天我们来讲如何从各方面提高网站的人气. 网站的人气固然离不开访问用户,这里面的用户大部分可能来自BBS,BLOG或者一些留言和评论版.也就是说讲网站的人气提高,必须将网站的气氛提升的比较火热和激烈.用户的积极性也就自然被带动起来了. 作为网站,我们应该如何做才能将用户的积极性调用起来呢? 很简单,将你的网站社区化经营. "网站社区化经营"什么意思?就是将我们的网站打造成一种虚拟社会,形成一种互动交流的方式.我们的访问用户可以直接参与和分享各种主题,活动等等.更好的让用户直接

MySQL查询优化技术系列讲座之使用索引

索引是提高查询速度的最重要的工具.当然还有其它的一些技术可供使用,但是一般来说引起最大性能差异的都是索引的正确使用.在MySQL邮件列表中,人们经常询问那些让查询运行得更快的方法.在大多数情况下,我们应该怀疑数据表上有没有索引,并且通常在添加索引之后立即解决了问题.当然,并不总是这样简单就可以解决问题的,因为优化技术本来就并非总是简单的.然而,如果没有使用索引,在很多情况下,你试图使用其它的方法来提高性能都是在浪费时间.首先使用索引来获取最大的性能提高,接着再看其它的技术是否有用. 这一部分讲述

MySQL查询优化系列讲座之数据类型与效率

    这一部分提供了如何选择数据类型来帮助提高查询运行速度的一些指导: 在可以使用短数据列的时候就不要用长的.如果你有一个固定长度的CHAR数据列,那么就不要让它的长度超出实际需要.如果你在数据列中存储的最长的值有40个字符,就不要定义成CHAR(255),而应该定义成CHAR(40).如果你能够用MEDIUMINT代替BIGINT,那么你的数据表就小一些(磁盘I/O少一些),在计算过程中,值的处理速度也快一些.如果数据列被索引了,那么使用较短的值带来的性能提高更加显著.不仅索引可以提高查询速

MySQL查询优化系列讲座之查询优化器(1)

    当你提交一个查询的时候,MySQL会分析它,看是否可以做一些优化使处理该查询的速度更快.这一部分将介绍查询优化器是如何工作的.如果你想知道MySQL采用的优化手段,可以查看MySQL参考手册. 当然,MySQL查询优化器也利用了索引,但是它也使用了其它一些信息.例如,如果你提交如下所示的查询,那么无论数据表有多大,MySQL执行它的速度都会非常快: SELECT * FROM tbl_name WHERE 0; 在这个例子中,MySQL查看WHERE子句,认识到没有符合查询条件的数据行,