《tcl集成测试环境搭建指南(Console版).docx》由会员分享,可在线阅读,更多相关《tcl集成测试环境搭建指南(Console版).docx(18页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Tcl集成测试环境搭建指南博为峰软件技术有限公司2006年1月修订记录录日期修订版本本修改章节节修改描述述作者20066-1-171.0初稿完成成周峰第一步:获取tccl8.3的安安装包,安安装到cc:目目录下(安安装时一一定要选选取liib库安安装)。第二步:利用Viisuaal CC+建建立一个个Winn32 Coonsoole Apppliccatiion 工程,工工程的名名字为CCounnterrTesst。因为被测测对象有有MFCC类,所所以该工工程应该该支持MMFC:第三步:参照下面面两个图图,分别别创建ttestt.h和和tesst.ccpp文文件。这这两个文件件均为空空文件。第
2、四步:添加被测测试模块块的代码码1)把下下面的代代码拷贝贝到文件件tesst.ccpp中中:2)把下下面的代代码拷贝贝到文件件tesst.hh中第五步:添加tccl扩展展指令代代码1)把下下面的代代码拷贝贝到文件件CouunteerTeest.cppp中:#inccludde tcll.h#inccludde tesst.hh第六步:1)定义义tcll解释器器:通过过使用TTCL内内部的数数据类型型Tcll_Innterrp定义义TCLL解释器器全局变变量。在在文件CCounnterrTesst.ccpp中中定义ttcl解解释器,即全局变量:Tcl_Interp* MyInterp;例如:(红
3、红色部分分为添加加的代码码)/定义义解释器器Tcl_Intterpp* MMyInnterrp;2)创建建解释器器:通过过使用TTCL函函数Tccl_CCreaateIInteerp()创创建解释释器。在文件CCounnterrTesst.ccpp中中创建ttcl解解释器,例例如:(红红色部分分代码)int _tmmainn(innt aargcc, TTCHAAR* arggv, TTCHAAR* envvp)intt nRRetCCodee = 0;/ iniitiaalizze MMFC andd prrintt annd eerroor oon ffaillureeif (!AAfxW
4、WinIInitt(:GettModduleeHanndlee(NUULL), NNULLL, :GeetCoommaandLLinee(), 0)/ TOODO: chhangge eerroor ccodee too suuit youur nneeddsceerr _T(Faatall Errrorr: MMFC iniitiaalizzatiion faiiledd) enddl;nRRetCCodee = 1;elsse/ TOODO: coode youur aappllicaatioonss beehavviorr heere./创建ttcl解解释器MyyIntterpp = T
5、cll_CrreatteInnterrp();/初始始化Tccl解释释器Tccl_IInitt(MyyIntterpp);/创建外外部命令令COUUNTEER,该该外部命命令可以以被tccl解释释器识别别,并且且执行CCOUNNTERR命令的的时候,直直/接接调用外外部命令令函数TTclEEx_CCounnterr。Tccl_CCreaateCCommmandd(MyyIntterpp,CCOUNNTERR,TTclEEx_CCounnterr,NUULL,NULLL);innt rrCodde;chhar sSccrippt2255;/CSttrinng ssScrriptt;whhilee
6、(1)/通过过嵌入集集成测试试框架的的Tcll解释器器MyIInteerp,运运行外部部传入的的tcll脚本pprinntf(请输输入要执执行的TTCL脚脚本文件件名:n);sscannf(%s,&ssScrriptt);rrCodde = Tccl_EEvallFille(MMyInnterrp,(chaar *)sSScriipt );iif (TCCL_OOK != rrCodde )priintff(TTherre aare errrorss inn yoour Tcll Fiilen); eelsee priintff(TTesttingg Suucceeed!n);/CSttrin
7、ng sstrHHelllo;/strrHelllo.LoaadSttrinng(IIDS_HELLLO);/couut (LPCCTSTTR)sstrHHelllo eendll;retturnn nRRetCCodee;3)初始始化解释释器:通通过使用用TCLL函数TTcl_Iniit()初初始化解解释器。在文件CCounnterrTesst.ccpp中中初始化化tcll解释器器,例如如:(红红色部分分代码)int _tmmainn(innt aargcc, TTCHAAR* arggv, TTCHAAR* envvp)intt nRRetCCodee = 0;/ iniitiaalizz
8、e MMFC andd prrintt annd eerroor oon ffaillureeif (!AAfxWWinIInitt(:GettModduleeHanndlee(NUULL), NNULLL, :GeetCoommaandLLinee(), 0)/ TOODO: chhangge eerroor ccodee too suuit youur nneeddsceerr _T(Faatall Errrorr: MMFC iniitiaalizzatiion faiiledd) enddl;nRRetCCodee = 1;elsse/ TOODO: coode youur aappl
9、licaatioonss beehavviorr heere./创建建tcll解释器器MyyIntterpp = Tcll_CrreatteInnterrp();/初始始化Tccl解释释器Tccl_IInitt(MyyIntterpp);/创建外外部命令令COUUNTEER,该该外部命命令可以以被tccl解释释器识别别,并且且执行CCOUNNTERR命令的的时候,直直/接接调用外外部命令令函数TTclEEx_CCounnterr。Tccl_CCreaateCCommmandd(MyyIntterpp,CCOUNNTERR,TTclEEx_CCounnterr,NUULL,NULLL);innt
10、 rrCodde;chhar sSccrippt2255;/CSttrinng ssScrriptt;whhilee(1)/通过过嵌入集集成测试试框架的的Tcll解释器器MyIInteerp,运运行外部部传入的的tcll脚本pprinntf(请输输入要执执行的TTCL脚脚本文件件名:n);sscannf(%s,&ssScrriptt);rrCodde = Tccl_EEvallFille(MMyInnterrp,(chaar *)sSScriipt );iif (TCCL_OOK != rrCodde )priintff(TTherre aare errrorss inn yoour Tcll
11、 Fiilen); eelsee priintff(TTesttingg Suucceeed!n);/CSttrinng sstrHHelllo;/strrHelllo.LoaadSttrinng(IIDS_HELLLO);/couut (LPCCTSTTR)sstrHHelllo eendll;retturnn nRRetCCodee;4)向解解释器注注册扩展展指令:通过使使用TCCL函数数Tcll_CrreatteCoommaand()向解释器器注册自自定义扩扩展指令令。在文件CCounnterrTesst.ccpp中中注册扩扩展指令令,例如如:(红红色部分分代码)int _tmmainn
12、(innt aargcc, TTCHAAR* arggv, TTCHAAR* envvp)intt nRRetCCodee = 0;/ iniitiaalizze MMFC andd prrintt annd eerroor oon ffaillureeif (!AAfxWWinIInitt(:GettModduleeHanndlee(NUULL), NNULLL, :GeetCoommaandLLinee(), 0)/ TOODO: chhangge eerroor ccodee too suuit youur nneeddsceerr _T(Faatall Errrorr: MMFC in
13、iitiaalizzatiion faiiledd) enddl;nRRetCCodee = 1;elsse/ TOODO: coode youur aappllicaatioonss beehavviorr heere./创建建tcll解释器器MyyIntterpp = Tcll_CrreatteInnterrp();/初始始化Tccl解释释器Tccl_IInitt(MyyIntterpp);/注册册扩展指指令COOUNTTER,该该扩展指指令可以以被tccl解释释器识别别,并且且执行CCOUNNTERR的时候候,直接接调用扩扩展指令令对应处处理函数数TcllEx_Couunteer。Tcc
14、l_CCreaateCCommmandd(MyyIntterpp,CCOUNNTERR,TTclEEx_CCounnterr,NUULL,NULLL);innt rrCodde;chhar sSccrippt2255;/CSttrinng ssScrriptt;whhilee(1)/通过过嵌入集集成测试试框架的的Tcll解释器器MyIInteerp,运运行外部部传入的的tcll脚本pprinntf(请输输入要执执行的TTCL脚脚本文件件名:n);sscannf(%s,&ssScrriptt);rrCodde = Tccl_EEvallFille(MMyInnterrp,(chaar *)sSS
15、criipt );iif (TCCL_OOK != rrCodde )priintff(TTherre aare errrorss inn yoour Tcll Fiilen); eelsee priintff(TTesttingg Suucceeed!n);/CSttrinng sstrHHelllo;/strrHelllo.LoaadSttrinng(IIDS_HELLLO);/couut (LPCCTSTTR)sstrHHelllo eendll;retturnn nRRetCCodee;5)定义义扩展指指令COOUNTTER对对应的处处理函数数TcllEx_Couunteer()#in
16、ccludde stddafxx.h#inccludde CouunteerTeest.h#inccludde tcll.h#inccludde tesst.hhint TcllEx_Couunteer(CClieentDDataa cllienntDaata,Tcll_Innterrp * innterrp,iint arggc, chhar* arrgv)retturnn TCCL_OOK;6)执行行外部传传入的TTCL脚脚本文件件:通过过使用TTCL函函数Tccl_EEvallFille()执执行外部部传入的的TCLL脚本文文件。在文件CCounnterrTesst.ccpp中中添加执执
17、行外部部脚本文文件的代代码,例例如:(红红色部分分代码)int _tmmainn(innt aargcc, TTCHAAR* arggv, TTCHAAR* envvp)intt nRRetCCodee = 0;/ iniitiaalizze MMFC andd prrintt annd eerroor oon ffaillureeif (!AAfxWWinIInitt(:GettModduleeHanndlee(NUULL), NNULLL, :GeetCoommaandLLinee(), 0)/ TOODO: chhangge eerroor ccodee too suuit youur
18、nneeddsceerr _T(Faatall Errrorr: MMFC iniitiaalizzatiion faiiledd) enddl;nRRetCCodee = 1;elsse/ TOODO: coode youur aappllicaatioonss beehavviorr heere./创建建tcll解释器器MyyIntterpp = Tcll_CrreatteInnterrp();/初始始化Tccl解释释器Tccl_IInitt(MyyIntterpp);/创建建外部命命令COOUNTTER,该该外部命命令可以以被tccl解释释器识别别,并且且执行CCOUNNTERR命令的的
19、时候,直直/接接调用外外部命令令函数TTclEEx_CCounnterr。Tccl_CCreaateCCommmandd(MyyIntterpp,CCOUNNTERR,TTclEEx_CCounnterr,NUULL,NULLL);int rCoode;chhar sSccrippt2255;/CSttrinng ssScrriptt;whhilee(1)/通过过嵌入集集成测试试框架的的Tcll解释器器MyIInteerp,运运行外部部传入的的tcll脚本pprinntf(请输输入要执执行的TTCL脚脚本文件件名:n);sscannf(%s,&ssScrriptt);rrCodde = Tcc
20、l_EEvallFille(MMyInnterrp,(chaar *)sSScriipt );iif (TCCL_OOK != rrCodde )priintff(TTherre aare errrorss inn yoour Tcll Fiilen); eelsee priintff(TTesttingg Suucceeed!n);/CSttrinng sstrHHelllo;/strrHelllo.LoaadSttrinng(IIDS_HELLLO);/couut (LPCCTSTTR)sstrHHelllo Opptioon-Diirecctorry.菜单单中,设设置tccl833包的头
21、头文件路路径:3)在toool-Opptioon-Diirecctorry.菜单单中,设设置tccl833包的库库文件路路径:第九步:实现扩扩展指令令。参考代代码:int TcllEx_Couunteer(CClieentDDataa cllienntDaata,Tcll_Innterrp * innterrp,iint arggc, chhar* arrgv)/定定义实际际输出intt aRRet; /实际际输出空空行行数数intt bRRet; /实际际输出注注释行行行数intt cRRet; /实际际输出代代码行行行数intt dRRet; /实际际输出总总行行数数/定定义期望望输出in
22、tt aEExceepteedReet; /期望输输出空行行行数intt bEExceepteedReet; /期望输输出注释释行行数数intt cEExceepteedReet; /期望输输出代码码行行数数intt dEExceepteedReet; /期望输输出总行行行数/定定义被测测对象CTeest Myttestt;/第第一步:检查参参数个数数if (100 != arrgc)innterrp-ressultt = Errrorr paara nummberr!;reeturrn TTCL_OK;/第第二步:取出参参数Myttestt.g_szSStattFilleNaame = aa
23、rgvv1; /取文文件路径径/sstr = aargvv1;/取取统计空空行标志志位if (TCCL_OOK != TTcl_GettIntt(innterrp,aargvv2,&gg_bSStattBlaankLLineeFlaag) innterrp-ressultt = paara22 errrorr;reeturrn TTCL_OK; /取取统计注注释行标标志位if (TCCL_OOK != TTcl_GettIntt(innterrp,aargvv3,&gg_bSStattCommmLiineFFlagg) innterrp-ressultt = paara33 errrorr;r
24、eeturrn TTCL_OK;/取取统计代代码行标标志位if (TCCL_OOK != TTcl_GettIntt(innterrp,aargvv4,&gg_bSStattCoddeLiineFFlagg) innterrp-ressultt = paara44 errrorr;reeturrn TTCL_OK;/取取统计总总行行标标志位if (TCCL_OOK != TTcl_GettIntt(innterrp,aargvv5,&gg_bSStattTottalLLineeFlaag) innterrp-ressultt = paara55 errrorr;reeturrn TTCL_OK
25、;/取取期望输输出空行行行数if (TCCL_OOK != TTcl_GettIntt(innterrp,aargvv6,&aaExccepttedRRet) innterrp-ressultt = paara66 errrorr;reeturrn TTCL_OK;/取取期望输输出注释释行行数数if (TCCL_OOK != TTcl_GettIntt(innterrp,aargvv7,&bbExccepttedRRet) innterrp-ressultt = paara77 errrorr;reeturrn TTCL_OK;/取取期望输输出代码码行行数数if (TCCL_OOK != TT
26、cl_GettIntt(innterrp,aargvv8,&ccExccepttedRRet) innterrp-ressultt = paara88 errrorr;reeturrn TTCL_OK;/取取期望输输出总行行行数if (TCCL_OOK != TTcl_GettIntt(innterrp,aargvv9,&ddExccepttedRRet) innterrp-ressultt = paara99 errrorr;reeturrn TTCL_OK;/第第三步:调用被被测函数数Myteest.MaiinSttatFFun();aReet = g_iBllankkLinneNuum;
27、bReet = g_iCoommLLineeNumm;cReet = g_iCoodeLLineeNumm;dReet = g_iTootallLinneNuum;/第第四步:测试结结果比较较if (aaRett != aEExceepteedReet) | (bRRet != bExxceppteddRett) | (ccRett != cEExceepteedReet) | (dRRet != dExxceppteddRett) innterrp-ressultt = Teest Faiiledd!;elsse inteerp-reesullt = TTestt Suucceededd!;retturnn TCCL_OOK;