Qt自动化机制
在CukeTest运行Qt自动化时使用到两个组件:Qt自动化服务(Qt Service,后面都简称Qt服务)和Qt Agent。两者分别运行在CukeTest进程和被测的Qt应用进程中。通过两者交互完成自动化操作。
Qt自动化服务
Qt服务是全局唯一的,即一台机器上只有一个服务在运行。Qt服务总是伴随这CukeTest启动在后台中保持。可以在右下角的状态栏中观察到该服务正在运行。
后面的数字代表连接到当前服务中的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'