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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值