您的位置:首页 > 其它

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

2006-01-25 14:09 267 查看
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 的定义,我们可以很轻松的控制一个已经存在对象的所有方法与属性,同时,我们配合条件编译,可以保证,所有的测试代码均不会影响到我们现有的代码,轻轻松松实践动作的录制。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息