Qt自动化机制

在CukeTest运行Qt自动化时,使用到两个关键组件:Qt自动化服务(Qt Service,简称Qt服务)和Qt Agent。它们分别在CukeTest进程和被测的Qt应用进程中运行,通过相互交互实现自动化操作。

Qt自动化服务

Qt服务是全局唯一的,即在一台机器上只有一个服务在运行。Qt服务总是伴随CukeTest启动并在后台保持运行状态。你可以在右下角的状态栏中观察到该服务的运行状态。

状态栏中的Qt服务

状态栏中的数字代表当前连接到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自动化操作时不会发生冲突。

results matching ""

    No results matching ""