Qt自动化机制

在CukeTest运行Qt自动化时使用到两个组件:Qt自动化服务(Qt Service,后面都简称Qt服务)和Qt Agent。两者分别运行在CukeTest进程和被测的Qt应用进程中。通过两者交互完成自动化操作。

Qt自动化服务

Qt服务是全局唯一的,即一台机器上只有一个服务在运行。Qt服务总是伴随这CukeTest启动在后台中保持。可以在右下角的状态栏中观察到该服务正在运行。
状态栏中的Qt服务
后面的数字代表连接到当前服务中的Qt应用,至于如何让Qt应用连接到服务中,可以查看下一节——Qt Agent的介绍。

Qt Agent

在启动Qt应用时,CukeTest会加载Qt Agent到Qt应用进程中。这一步骤使CukeTest能够通过Qt服务操作该应用。详细的启动Qt应用方法,请参考启动Qt应用章节。

在Linux平台上,可以通过修改LD_PRELOAD环境变量的方式加载Qt Agent,具体方法可在Qt应用的启动一节中了解。

多用户环境Qt自动化设置

由于Qt自动化的机制,一个系统中有多个用户同时进行Qt自动化时会出现冲突,其它用户会无法访问Qt自动化服务。可以通过设置CUKETEST_CHANNEL环境变量为用户特定的管道名实现隔离。对于Windows和Linux要设置不同的值:

Windows平台

在Windows操作系统中,CUKETEST_CHANNEL环境变量默认值为leanpro_qt_agent,使用以下命令启动CukeTest可以使CukeTest使用与当前用户名相关的独立管道,保证不会发生冲突:

set CUKETEST_CHANNEL=leanpro_qt_agent_%USERNAME% && cuke

也可以在系统环境变量中设置为永久有效的。

Linux平台

在Linux操作系统中,CUKETEST_CHANNEL环境变量默认值为/tmp/leanpro_qt_agent,因此若缺少对/tmp目录的读写权限,Qt自动化服务也可能启动失败。使用以下命令启动CukeTest可以使CukeTest使用用户目录来运行Qt自动化服务:

CUKETEST_CHANNEL='$HOME/leanpro_qt_agent' cuketest

也可以通过下面的命令设置局部或者全局变量:

export CUKETEST_CHANNEL='$HOME/leanpro_qt_agent'

results matching ""

    No results matching ""