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,以确保使用与当前用户名相关的独立管道,避免冲突:
set CUKETEST_CHANNEL=leanpro_qt_agent_%USERNAME% && cuke
也可以在系统环境变量中进行设置,以使其永久有效。
Linux平台
在Linux操作系统中,CUKETEST_CHANNEL
环境变量的默认值为/tmp/leanpro_qt_agent
。如果缺少对/tmp
目录的读写权限,Qt自动化服务也可能启动失败。使用以下命令启动CukeTest,可以确保使用用户目录来运行Qt自动化服务:
CUKETEST_CHANNEL=$HOME/leanpro_qt_agent cuketest
也可以通过以下命令设置局部或全局变量:
export CUKETEST_CHANNEL=$HOME/leanpro_qt_agent
通过以上设置,可以确保在多用户环境中进行Qt自动化操作时不会发生冲突。