版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、Tcl集成测试环境搭建指南博为峰软件技术有限公司2006年1月修订记录日期修订版本修改章节修改描述作者2006-1-171.0初稿完成周峰第一步:获取tcl8.3的安装包,安装到c:目录下(安装时一定要选取lib库安装)。第二步:利用Visual C+建立一个Win32 Console Application 工程,工程的名字为CounterTest。因为被测对象有MFC类,所以该工程应该支持MFC:第三步:参照下面两个图,分别创建test.h和test.cpp文件。这两个文件均为空文件。第四步:添加被测试模块的代码1)把下面的代码拷贝到文件test.cpp中:2)把下面的代码拷贝到文件tes
2、t.h中第五步:添加tcl扩展指令代码1)把下面的代码拷贝到文件CounterTest.cpp中:#include "tcl.h"#include "test.h"第六步:1)定义tcl解释器:通过使用TCL内部的数据类型Tcl_Interp定义TCL解释器全局变量。在文件CounterTest.cpp中定义tcl解释器,即全局变量:Tcl_Interp* MyInterp;例如:(红色部分为添加的代码)/定义解释器Tcl_Interp* MyInterp;2)创建解释器:通过使用TCL函数Tcl_CreateInterp()创建解释器。在文件Count
3、erTest.cpp中创建tcl解释器,例如:(红色部分代码)int _tmain(int argc, TCHAR* argv, TCHAR* envp)int nRetCode = 0;/ initialize MFC and print and error on failureif (!AfxWinInit(:GetModuleHandle(NULL), NULL, :GetCommandLine(), 0)/ TODO: change error code to suit your needscerr << _T("Fatal Error: MFC initiali
4、zation failed") << endl;nRetCode = 1;else/ TODO: code your application's behavior here./创建tcl解释器MyInterp = Tcl_CreateInterp(); /初始化Tcl解释器Tcl_Init(MyInterp);/创建外部命令COUNTER,该外部命令可以被tcl解释器识别,并且执行COUNTER命令的时候,直/接调用外部命令函数TclEx_Counter。Tcl_CreateCommand(MyInterp,"COUNTER",TclEx_Co
5、unter,NULL,NULL);int rCode;char sScript255;/CString sScript; while(1)/通过嵌入集成测试框架的Tcl解释器MyInterp,运行外部传入的tcl脚本printf("请输入要执行的TCL脚本文件名:n");scanf("%s",&sScript);rCode = Tcl_EvalFile(MyInterp,(char *)sScript );if (TCL_OK != rCode )printf("There are errors in your Tcl Filen&qu
6、ot;); else printf("Testing Succeed!n");/CString strHello;/strHello.LoadString(IDS_HELLO);/cout << (LPCTSTR)strHello << endl;return nRetCode;3)初始化解释器:通过使用TCL函数Tcl_Init()初始化解释器。在文件CounterTest.cpp中初始化tcl解释器,例如:(红色部分代码)int _tmain(int argc, TCHAR* argv, TCHAR* envp)int nRetCode = 0;
7、/ initialize MFC and print and error on failureif (!AfxWinInit(:GetModuleHandle(NULL), NULL, :GetCommandLine(), 0)/ TODO: change error code to suit your needscerr << _T("Fatal Error: MFC initialization failed") << endl;nRetCode = 1;else/ TODO: code your application's behavi
8、or here./创建tcl解释器MyInterp = Tcl_CreateInterp(); /初始化Tcl解释器Tcl_Init(MyInterp);/创建外部命令COUNTER,该外部命令可以被tcl解释器识别,并且执行COUNTER命令的时候,直/接调用外部命令函数TclEx_Counter。Tcl_CreateCommand(MyInterp,"COUNTER",TclEx_Counter,NULL,NULL);int rCode;char sScript255;/CString sScript; while(1)/通过嵌入集成测试框架的Tcl解释器MyInter
9、p,运行外部传入的tcl脚本printf("请输入要执行的TCL脚本文件名:n");scanf("%s",&sScript);rCode = Tcl_EvalFile(MyInterp,(char *)sScript );if (TCL_OK != rCode )printf("There are errors in your Tcl Filen"); else printf("Testing Succeed!n");/CString strHello;/strHello.LoadString(IDS_HE
10、LLO);/cout << (LPCTSTR)strHello << endl;return nRetCode;4)向解释器注册扩展指令:通过使用TCL函数Tcl_CreateCommand()向解释器注册自定义扩展指令。在文件CounterTest.cpp中注册扩展指令,例如:(红色部分代码)int _tmain(int argc, TCHAR* argv, TCHAR* envp)int nRetCode = 0;/ initialize MFC and print and error on failureif (!AfxWinInit(:GetModuleHand
11、le(NULL), NULL, :GetCommandLine(), 0)/ TODO: change error code to suit your needscerr << _T("Fatal Error: MFC initialization failed") << endl;nRetCode = 1;else/ TODO: code your application's behavior here./创建tcl解释器MyInterp = Tcl_CreateInterp(); /初始化Tcl解释器Tcl_Init(MyInterp);
12、/注册扩展指令COUNTER,该扩展指令可以被tcl解释器识别,并且执行COUNTER的时候,直接调用扩展指令对应处理函数TclEx_Counter。Tcl_CreateCommand(MyInterp,"COUNTER",TclEx_Counter,NULL,NULL);int rCode;char sScript255;/CString sScript; while(1)/通过嵌入集成测试框架的Tcl解释器MyInterp,运行外部传入的tcl脚本printf("请输入要执行的TCL脚本文件名:n");scanf("%s",&am
13、p;sScript);rCode = Tcl_EvalFile(MyInterp,(char *)sScript );if (TCL_OK != rCode )printf("There are errors in your Tcl Filen"); else printf("Testing Succeed!n");/CString strHello;/strHello.LoadString(IDS_HELLO);/cout << (LPCTSTR)strHello << endl;return nRetCode;5)定义扩展指令
14、COUNTER对应的处理函数TclEx_Counter()#include "stdafx.h"#include "CounterTest.h"#include "tcl.h"#include "test.h"int TclEx_Counter(ClientData clientData,Tcl_Interp * interp,int argc, char* argv)return TCL_OK;6)执行外部传入的TCL脚本文件:通过使用TCL函数Tcl_EvalFile()执行外部传入的TCL脚本文件。在文件Co
15、unterTest.cpp中添加执行外部脚本文件的代码,例如:(红色部分代码)int _tmain(int argc, TCHAR* argv, TCHAR* envp)int nRetCode = 0;/ initialize MFC and print and error on failureif (!AfxWinInit(:GetModuleHandle(NULL), NULL, :GetCommandLine(), 0)/ TODO: change error code to suit your needscerr << _T("Fatal Error: MFC
16、initialization failed") << endl;nRetCode = 1;else/ TODO: code your application's behavior here./创建tcl解释器MyInterp = Tcl_CreateInterp(); /初始化Tcl解释器Tcl_Init(MyInterp);/创建外部命令COUNTER,该外部命令可以被tcl解释器识别,并且执行COUNTER命令的时候,直/接调用外部命令函数TclEx_Counter。Tcl_CreateCommand(MyInterp,"COUNTER",
17、TclEx_Counter,NULL,NULL);int rCode;char sScript255;/CString sScript; while(1)/通过嵌入集成测试框架的Tcl解释器MyInterp,运行外部传入的tcl脚本printf("请输入要执行的TCL脚本文件名:n");scanf("%s",&sScript);rCode = Tcl_EvalFile(MyInterp,(char *)sScript );if (TCL_OK != rCode )printf("There are errors in your Tcl
18、Filen"); else printf("Testing Succeed!n");/CString strHello;/strHello.LoadString(IDS_HELLO);/cout << (LPCTSTR)strHello << endl;return nRetCode;第七步:添加tcl头文件和库文件,并设置相应的头文件和库文件路径1)如下图所示,采用如下方法添加tcl83包中的tcl.h和tcl83.lib2)在tool->Option->Directory.菜单中,设置tcl83包的头文件路径:3)在tool
19、->Option->Directory.菜单中,设置tcl83包的库文件路径:第九步:实现扩展指令。参考代码:int TclEx_Counter(ClientData clientData,Tcl_Interp * interp,int argc, char* argv)/定义实际输出int aRet; /实际输出空行行数int bRet; /实际输出注释行行数int cRet; /实际输出代码行行数int dRet; /实际输出总行行数/定义期望输出int aExceptedRet; /期望输出空行行数int bExceptedRet; /期望输出注释行行数int cExcept
20、edRet; /期望输出代码行行数int dExceptedRet; /期望输出总行行数/定义被测对象CTest Mytest;/第一步:检查参数个数if (10 != argc)interp->result = "Error para number!"return TCL_OK;/第二步:取出参数Mytest.g_szStatFileName = argv1; /取文件路径/str = argv1; /取统计空行标志位if (TCL_OK != Tcl_GetInt(interp,argv2,&g_bStatBlankLineFlag) interp->
21、;result = "para2 error"return TCL_OK; /取统计注释行标志位if (TCL_OK != Tcl_GetInt(interp,argv3,&g_bStatCommLineFlag) interp->result = "para3 error"return TCL_OK;/取统计代码行标志位if (TCL_OK != Tcl_GetInt(interp,argv4,&g_bStatCodeLineFlag) interp->result = "para4 error"return TCL_OK;/取统计总行行标志位if (TCL_OK != Tcl_GetInt(interp,argv5,&g_bStatTotalLineFlag) interp->result = "para5 error"return TCL_OK;/取期望输出空行行数if (TCL_OK != Tcl_GetInt(interp,argv6,&aExceptedRet) interp->result = "para6 error"ret
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论