逃避不一定躲得过
面对不一定最难受
孤单不一定不快乐
得到不一定能长久
失去不一定不再有
转身不一定最软弱
别急着说别无选择
单元测试概述(2)
上一篇 /
下一篇 2008-11-27 00:03:04 / 天气: 晴朗
/ 心情: 郁闷
/ 个人分类:个人文章
二 测试代码编写51Testing软件测试网6qS1V OX8R#zg/uw:h
多数讲述单元测试的文章都是以Java为例,本文以C++为例,后半部分所介绍的单元测试工具也只介绍C++单元测试工具。下面的示例代码的开发环境是VC6.0。51Testing软件测试网#x1I7d/g
T
51Testing软件测试网C/x(bK6TF?K4C
产品类:
K"k%Y4BY3WJ0class CMyClass
G9a5ziA ma8O3w0{51Testing软件测试网6C0yZ/vPq^2X%o
public:
luS0\7n2Y?](w0 int Add(int i, int j);
6w&izQB6BXO0 CMyClass();
;ie8es0Z_Dy0 virtual ~CMyClass();
:oC|K3Nw
H051Testing软件测试网]+k#KQ
|;|e
private:
Vy4v MZRj [!j0 int mAge; //年龄
2M/S\.v7M%L:H6k0 CString mPhase; //年龄阶段,如"少年","青年"
#SD!J#yYw"x@|8W7H0};
0~/|,D`:~-]%Qw0v0
E~5sm0h0{)d3b
ze'?0建立对应的测试类CMyClassTester,为了节约编幅,只列出源文件的代码:
0aX#v"rN0void CMyClassTester::CaseBegin()51Testing软件测试网/`,kW*C&V8]e)E+tM
{
r@nX[Pd8~3Y0 //pObj是CMyClassTester类的成员变量,是被测试类的对象的指针,
C\5W_ Cc6s6t0 //为求简单,所有的测试类都可以用pObj命名被测试对象的指针。
ySYF.NPG0 pObj = new CMyClass();
3q#Db
Bw&v0}
b6p[C
`f&OAz {0
(I~pLR ZW0void CMyClassTester::CaseEnd()51Testing软件测试网*@x,Y[8j3z/K:U
^
{51Testing软件测试网E} [owu
delete pObj;
1t;A!a!J}nE M0}
Vd3h"`5K2d%T"R$ET0测试类的函数CaseBegin()和CaseEnd()建立和销毁被测试对象,每个测试用例的开头都要调用CaseBegin(),结尾都要调用CaseEnd()。51Testing软件测试网d#U?(U'g)V?I
N
T"@3I5p[@s4VJ0接下来,我们建立示例的产品函数:51Testing软件测试网H"u&M9A)R@
int CMyClass::Add(int i, int j)
0h\/a-Oekj0{51Testing软件测试网N9\n\[U3E
K*?
return i+j;
6B*rSOy"L;v Qk0}51Testing软件测试网&c{ts2l
和对应的测试函数:
jTp;\w0void CMyClassTester::Add_int_int()
&PoTkV0{
J:obu~&oV0}51Testing软件测试网:X%n4P.kU/w-F
把参数表作为函数名的一部分,这样当出现重载的被测试函数时,测试函数不会产生命名冲突。下面添加测试用例:51Testing软件测试网|6KnZf*\4K
xJ3?
void CMyClassTester::Add_int_int()
}Uh"mq:uFN0{51Testing软件测试网G"?9RJ-Y-p i`,v
//第一个测试用例51Testing软件测试网9hN
k].o,e
CaseBegin();{ //1
;tkh:m9i0 int i = 0; //251Testing软件测试网wB
}8p[j
int j = 0; //3
S2iJ s&c/b0 int ret = pObj->Add(i, j); //451Testing软件测试网
w5j[!]#d!PA
ASSERT(ret == 0); //5
,FEH4j(~b(M0 }CaseEnd(); //6