基于cppunit的bcb中,运行某测试用例时,弹出窗口的实现方法

如何在cppunit中动态的添加form?并在运行某个测试用例时,弹出窗口来显示视频图像等?

cppunit中,是通过new一个个的unit来添加test suitetestcase的。那么如何在运行的过程中,如果要在form中,添加panal,来显示视频画面之类的呢?

首先new一个form。在窗体设计器模式,可以看到一个object inspector,有一个Eventstab,找到OnClose,输入函数名称,然后点一下就OK

.Cpp文件中,添加如下代码:

void _fastcall TForm1::FormClose(Tobject *Sender,TcloseAction &Action)

{

    Action=caFree;  //add by amy

}

在调用Close()时,会自动触发OnClose事件,我们知道窗体没有关闭,而是最小化,说明在OnCloseAction的此时的值为caMinimize。所以我们要写上面的方法来关闭。

参考上篇文章,自动化工具cppunitbcb中的应用方法中的方法,创建了一个unit,并参考example,添加了testsuite。现在要做的就是在unit写的中,调用上面的form     .h文件中,添加#include "xxx.h"xxx为上面newform.h文件名称一致。并在自己创建的类中,声明如下(部分代码):

class xxx : public TestCase

{   public:    

TForm1 *VideoShowForm;// TForm1的名称与上面的form中的名称一致。

 void   CreateShowVideo();//在此函数中动态创建TForm1

}

cpp文件中,实现函数

void  StartPreviewTestSuite::CreateShowVideo()

{

    try

    {

    VideoShowForm=new TForm1(Application);

    g_hWndPreviewAry=new HWND[3];

    g_hWndPreviewAry[0]=VideoShowForm->mVideoPanal1->Handle;//可以调用TForm1中创建的panal

    VideoShowForm->Show();或是VideoShowForm ->ShowModal();    }

    catch(Exception &amp)

    {

    Application->ShowException(&amp);

    }

}

最后使用完了的释放问题:如果在tearDown中释放,会有什么问题呢?

 delete VideoShowForm;//运行结束,如success时,form窗口显示一下,会立即消失。如果是显示视频图像,可能还没有来得及看,就窗口关闭了。

 在需要的地方,如setup函数中,调用CreateShowVideo();

理论上无论窗体创建是否完成,都必须运行delete来释放刚才创建的子窗体,如delete VideoShowForm;但是我们已经在前面把释放的过程写在OnClose事件函数内,这个函数有一个参数为Action,它有四个取值:caNone为不关闭窗体,什么也不操作;caHide为不关闭窗体,但把它隐藏起来;caFree为关闭窗体,同时释放内存;caMinimize为最小化窗体,不关闭。所以关闭form后,会自动释放。

Project/option/form中,有两种形式:其中,autocreate就是Form在应用程序中自动创建,而available是创建了一个窗口类,在你动态创建的时候才会实例化窗口类。

 

你可能感兴趣的:(基于cppunit的bcb中,运行某测试用例时,弹出窗口的实现方法)