如何利用BaseTestCase 来模拟 脚本录制:
2006-01-25 14:09
344 查看
BaseTestCase system 是属于主线程的,在执行Test Case 后,BaseTestCase system 将接管主线程的操作权,然后执行test case ,正因为BaseTestCase system具备这样的能力,同时因为它是具有代码级的,所以他可以很简单的控制所有对象,从而实现动作的录制。
下面我们用一个Sample 来演示BaseTestCase system 是如何实现动作的录制。
首先我们来看一下测试用类的代码:
//.h
#include "BaseTestCase.h"
class CTest_View : public CBaseTestCase
{
TEST_CASE_MAP
BASE_TEST_CASE_H(CTest_View)
public:
…….
void test_Annotation_circle();
……
};
// .cpp
BEGIN_TEST_CASE_MAP(CTest_View)
……….
TEST_CASE_MEMBER(test_Annotation_circle)
………………..
END_TEST_CASE_MAP
void CTest_View::test_Annotation_circle()
{
TEST_CASE_TRACE("Begin");
//获取被测试的对象,通常可是使用这中方法,当然也可以使用一个全局的指针来记录//我们要测试的对象 ,这个全局的对象可以通过条件编译来实现,这样可以保证在正
//式 Release 的时候不会影响到产品
CMainFrame* pMain =(CMainFrame*) AfxGetMainWnd();
CImageView * pView = (CImageView*)pMain->GetActiveView();
if (pView)
{
TEST_CASE_TRACE("Draw Line (200,200) to (300,300)");
// 这部分是模拟用户在Toolbar 上点击 Circle button 的作用。因为点击这个button
// 的动作就是执行这样的动作,所以这样等于用户点击了button
pView->type = CImageView::CIRCLE;
TEST_CASE_DELAY(10);
// 在CImageView 的头文件中添加
// #ifdef TEST_CASE_CODE
// friend class CTest_View;
// #endif
// 这样测试用类可以访问任何它所想访问的函数或是变量 ^_^
// 同样是使用条件编译,不会影响到正常的Release
// 以下模拟鼠标点击,移动的动作
pView->OnLButtonDown(1,CPoint(200,200));
pView->OnMouseMove(1,CPoint(200,200));
pView->OnLButtonUp(1,CPoint(300,300));
TEST_CASE_TRACE("Draw Line (250,250) to (400,400)");
TEST_CASE_DELAY(10);
pView->OnLButtonDown(1,CPoint(250,250));
pView->OnMouseMove(1,CPoint(400,400));
pView->OnLButtonUp(1,CPoint(400,400));
TEST_CASE_DELAY(10);
TEST_CASE_TRACE("Draw Line (350,350) to (400,400)");
pView->OnLButtonDown(1,CPoint(350,350));
pView->OnMouseMove(1,CPoint(400,400));
pView->OnLButtonUp(1,CPoint(400,400));
}
TEST_CASE_TRACE("End");
}
在这里我们可以看到,通过利用C++ 这个 friend class 的定义,我们可以很轻松的控制一个已经存在对象的所有方法与属性,同时,我们配合条件编译,可以保证,所有的测试代码均不会影响到我们现有的代码,轻轻松松实践动作的录制。
下面我们用一个Sample 来演示BaseTestCase system 是如何实现动作的录制。
首先我们来看一下测试用类的代码:
//.h
#include "BaseTestCase.h"
class CTest_View : public CBaseTestCase
{
TEST_CASE_MAP
BASE_TEST_CASE_H(CTest_View)
public:
…….
void test_Annotation_circle();
……
};
// .cpp
BEGIN_TEST_CASE_MAP(CTest_View)
……….
TEST_CASE_MEMBER(test_Annotation_circle)
………………..
END_TEST_CASE_MAP
void CTest_View::test_Annotation_circle()
{
TEST_CASE_TRACE("Begin");
//获取被测试的对象,通常可是使用这中方法,当然也可以使用一个全局的指针来记录//我们要测试的对象 ,这个全局的对象可以通过条件编译来实现,这样可以保证在正
//式 Release 的时候不会影响到产品
CMainFrame* pMain =(CMainFrame*) AfxGetMainWnd();
CImageView * pView = (CImageView*)pMain->GetActiveView();
if (pView)
{
TEST_CASE_TRACE("Draw Line (200,200) to (300,300)");
// 这部分是模拟用户在Toolbar 上点击 Circle button 的作用。因为点击这个button
// 的动作就是执行这样的动作,所以这样等于用户点击了button
pView->type = CImageView::CIRCLE;
TEST_CASE_DELAY(10);
// 在CImageView 的头文件中添加
// #ifdef TEST_CASE_CODE
// friend class CTest_View;
// #endif
// 这样测试用类可以访问任何它所想访问的函数或是变量 ^_^
// 同样是使用条件编译,不会影响到正常的Release
// 以下模拟鼠标点击,移动的动作
pView->OnLButtonDown(1,CPoint(200,200));
pView->OnMouseMove(1,CPoint(200,200));
pView->OnLButtonUp(1,CPoint(300,300));
TEST_CASE_TRACE("Draw Line (250,250) to (400,400)");
TEST_CASE_DELAY(10);
pView->OnLButtonDown(1,CPoint(250,250));
pView->OnMouseMove(1,CPoint(400,400));
pView->OnLButtonUp(1,CPoint(400,400));
TEST_CASE_DELAY(10);
TEST_CASE_TRACE("Draw Line (350,350) to (400,400)");
pView->OnLButtonDown(1,CPoint(350,350));
pView->OnMouseMove(1,CPoint(400,400));
pView->OnLButtonUp(1,CPoint(400,400));
}
TEST_CASE_TRACE("End");
}
在这里我们可以看到,通过利用C++ 这个 friend class 的定义,我们可以很轻松的控制一个已经存在对象的所有方法与属性,同时,我们配合条件编译,可以保证,所有的测试代码均不会影响到我们现有的代码,轻轻松松实践动作的录制。
相关文章推荐
- 如何利用BaseTestCase实现单元测试
- 如何利用loadrunner12录制app脚本
- LoadRunner如何在IE7+Win2003环境下录制脚本
- 如何利用启动脚本将目录下的多个jar自动加入到classpath中
- selenium webdriver学习(十三)------------如何利用Actions类模拟鼠标和键盘的操作
- 如何利用fis3来模拟后台返回数据
- 如何利用an-aw-base框架快速开发android应用application
- linux用shell脚本模拟时钟 && 脚本录制
- 集群环境下 如何导入数据文件(利用文件服务器)如何创建大数据模拟环境
- 模拟RFT录制功能,生成自定义脚本
- QTP录制脚本后要验证多个用户的登录情况/查询情况,如何操作?
- 如何利用模拟器模拟网络相关命令实例讲解
- PowerShell_零基础自学课程_3_如何利用Powershell ISE调试PS脚本
- 【教程】手把手教你如何利用工具(IE9的F12)去分析模拟登陆网站(百度首页)的内部逻辑过程
- 如何利用Ruby简单模拟Lambda演算详解
- 如何利用已有的cook模拟登陆知乎,并爬取相关问题下所有的答案
- 利用fiddler录制脚本
- [原创]LoadRunner 12.02 录制脚本时提示无Internet访问,如何解决?
- ◎Vbs脚本编程简明教程之四—如何利用Vbs运行外部程序?
- 使用LoadRunner录制脚本时如何选择合适的协议?