tcl集成测试环境搭建指南(Console版).docx

上传人:小飞机 文档编号:1894330 上传时间:2022-12-24 格式:DOCX 页数:15 大小:205.20KB
返回 下载 相关 举报
tcl集成测试环境搭建指南(Console版).docx_第1页
第1页 / 共15页
tcl集成测试环境搭建指南(Console版).docx_第2页
第2页 / 共15页
tcl集成测试环境搭建指南(Console版).docx_第3页
第3页 / 共15页
tcl集成测试环境搭建指南(Console版).docx_第4页
第4页 / 共15页
tcl集成测试环境搭建指南(Console版).docx_第5页
第5页 / 共15页
点击查看更多>>
资源描述

《tcl集成测试环境搭建指南(Console版).docx》由会员分享,可在线阅读,更多相关《tcl集成测试环境搭建指南(Console版).docx(15页珍藏版)》请在三一办公上搜索。

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()创建解释器。在文件CounterTest.cpp中创建tcl解释器,例如:(

3、红色部分代码)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 initialization failed) endl;nRetCode = 1;else/

4、TODO: code your applications behavior 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)/通

5、过嵌入集成测试框架的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); else printf(Testing Succeed!n);/CString strHello;/strHello.LoadString(IDS_HELLO);/cout (LPCTSTR)strHello

6、endl;return nRetCode;3)初始化解释器:通过使用TCL函数Tcl_Init()初始化解释器。在文件CounterTest.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 t

7、o suit your needscerr _T(Fatal Error: MFC initialization failed) endl;nRetCode = 1;else/ TODO: code your applications behavior here./创建tcl解释器MyInterp = Tcl_CreateInterp(); /初始化Tcl解释器Tcl_Init(MyInterp);/创建外部命令COUNTER,该外部命令可以被tcl解释器识别,并且执行COUNTER命令的时候,直/接调用外部命令函数TclEx_Counter。Tcl_CreateCommand(MyInter

8、p,COUNTER,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 Filen); else printf(Test

9、ing Succeed!n);/CString strHello;/strHello.LoadString(IDS_HELLO);/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 erro

10、r 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 applications behavior here./创建tcl解释器MyInterp = Tcl_CreateInterp(); /初始化Tcl解释器Tcl_Init(MyI

11、nterp);/注册扩展指令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,&sScript);rCode = Tcl_EvalFile(M

12、yInterp,(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)定义扩展指令COUNTER对应的处理函数TclEx_Counter()#include stdafx.h#include CounterTest.h#includ

13、e tcl.h#include test.hint TclEx_Counter(ClientData clientData,Tcl_Interp * interp,int argc, char* argv)return TCL_OK;6)执行外部传入的TCL脚本文件:通过使用TCL函数Tcl_EvalFile()执行外部传入的TCL脚本文件。在文件CounterTest.cpp中添加执行外部脚本文件的代码,例如:(红色部分代码)int _tmain(int argc, TCHAR* argv, TCHAR* envp)int nRetCode = 0;/ initialize MFC and

14、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 applications behavior here./创建tcl解释器MyInterp = Tcl_CreateInterp(); /初始化Tcl解

15、释器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解释器MyInterp,运行外部传入的tcl脚本printf(请输入要执行的TCL脚本文件名:n);scanf(%s,&sScript);rCode = T

16、cl_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 Option-Directory.菜单中,设置tcl83包的头文件路径:3)在tool-Option-Directory.菜单中,设置tcl83包的库文件路径:第九步:实现扩展指令。

17、参考代码: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 cExceptedRet; /期望输出代码行行数int dExceptedRet; /期望输出总行行数/定义被测对象CTest

18、 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-result = para2 error;return TCL_OK; /取统计注释行标志位if (TCL_OK != Tcl_GetInt(interp,

19、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;/取期望输

20、出空行行数if (TCL_OK != Tcl_GetInt(interp,argv6,&aExceptedRet) interp-result = para6 error;return TCL_OK;/取期望输出注释行行数if (TCL_OK != Tcl_GetInt(interp,argv7,&bExceptedRet) interp-result = para7 error;return TCL_OK;/取期望输出代码行行数if (TCL_OK != Tcl_GetInt(interp,argv8,&cExceptedRet) interp-result = para8 error;re

21、turn TCL_OK;/取期望输出总行行数if (TCL_OK != Tcl_GetInt(interp,argv9,&dExceptedRet) interp-result = para9 error;return TCL_OK;/第三步:调用被测函数Mytest.MainStatFun();aRet = g_iBlankLineNum;bRet = g_iCommLineNum;cRet = g_iCodeLineNum;dRet = g_iTotalLineNum;/第四步:测试结果比较if (aRet != aExceptedRet) | (bRet != bExceptedRet) | (cRet != cExceptedRet) | (dRet != dExceptedRet) interp-result = Test Failed!;else interp-result = Test Succeded!;return TCL_OK;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号