如何利用BaseTestCase 来模拟脚本录制

发表于:2007-8-29 13:33

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:Ricmy    来源:Ricmy的专栏

        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 的定义,我们可以很轻松的控制一个已经存在对象的所有方法与属性,同时,我们配合条件编译,可以保证,所有的测试代码均不会影响到我们现有的代码,轻轻松松实践动作的录制。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号