由AUT启动的子进程的录制/回放

在Squish for Java中连接Java子进程

Squish for Java 会自动连接Java子进程,如果这些子进程是通过java(或java.exe、javaw.exe)启动的。但是,可能还需要进一步设置。如果记录/重放Java子进程对您不起作用,请联系Squish技术支持。

在记录子进程时,测试脚本将包含调用 ApplicationContext waitForApplicationLaunch() 函数。此函数为每个作为子进程启动的应用程序返回一个 ApplicationContext 对象。(参见应用程序上下文。)使用上下文对象可以让Squish在测试脚本执行期间的不同点知道它应该与哪个应用程序交互。(有关与应用程序上下文一起工作的详细信息,请参阅如何使用ApplicationContext对象。)

Squish for Qt中连接Qt子进程

默认情况下,Squish for Qt会连接由测试启动的应用程序,并忽略AUT启动的任何子进程。但是,当在Squish for Qt中启用时,Squish for Qt通常支持测试作为子进程启动的程序。

要启用对Qt子进程的记录和重放,请通过单击项目的测试套件设置打开测试套件设置,以便显示测试套件设置视图,然后勾选连接由应用程序启动的子进程复选框。

请注意,在使用Windows上的Qt子进程进行记录和重放时,还需要应用在Windows上连接Qt子进程的附加设置在Windows上非侵入式连接Qt子进程的附加设置中描述的附加设置。

在记录子进程时,测试脚本将包含调用 ApplicationContext waitForApplicationLaunch() 函数。此函数为每个作为子进程启动的应用程序返回一个 ApplicationContext 对象。(参见应用程序上下文。)使用上下文对象可以让Squish在测试脚本执行期间的不同点知道它应该与哪个应用程序交互。(有关与应用程序上下文一起工作的详细信息,请参阅如何使用ApplicationContext对象。)

在Windows上连接Qt子进程的附加设置

(有关本方法的替代方法,请参阅在Windows上非侵入式连接Qt子进程的附加设置。)

为了使Squish for Qt能够在Windows上连接AUT的子进程,需要在AUT的源代码中进行小小的更改,这将导致通过包装程序(SQUISH_DIR/bin/dllpreload.exe)启动子进程。

可以对AUT进行必要的更改,以便只有在通过Squish启动AUT时才启用它,例如通过检查是否存在名为SQUISH_PREFIX的环境变量。(Squish为AUT进程设置此环境变量。)

例如,假设AUT有如下用于启动子进程的源代码

QProcess process;
process.start("subprogram.exe");

要将此代码更改为与Squish一起工作,需要更改AUT的两种方式。首先添加一个新的命令行参数,比如--testing,当提供时将全局布尔值TESTING设置为true。现在更新调用子进程的代码如下

QProcess process;
QStringList commands;
#ifdef Q_OS_WIN32
if (TESTING)
    commands.append("dllpreload.exe");
#endif
commands.append("subprogram.exe");
process.start(commands[0], commands.mid(1));

TESTING未定义时,commands字符串列表将只包含一个项目("subprogram.exe"),并且commands.mid(1)将无害地返回一个空列表。

为了使更改生效,在测试套件设置视图(或对于Squish 3,测试套件设置对话框)中将--testing添加到AUT的参数中。

现在,当 Squish 在 Windows 上执行 AUT 并启动子进程时,实际上会发生的情况是,Squish 的 dllpreload.exe 程序将作为其第一个参数启动预期的应用程序(例如,子程序.exe),并将其他作为参数传递给预期应用程序的参数按正常方式传递。这意味着 AUT 和子进程的行为将与之前完全相同。

在记录子进程时,测试脚本将包含调用 ApplicationContext waitForApplicationLaunch() 函数。此函数为每个作为子进程启动的应用程序返回一个 ApplicationContext 对象。(参见应用程序上下文。)使用上下文对象可以让Squish在测试脚本执行期间的不同点知道它应该与哪个应用程序交互。(有关与应用程序上下文一起工作的详细信息,请参阅如何使用ApplicationContext对象。)

在 Windows 上非侵入性连接 Qt 子进程的额外设置

(另请参阅在 Windows 上连接 Qt 子进程的额外设置以了解实现此功能的替代方法。)

要启用 Squish for Qt 在 Windows 上连接 AUT 的子进程而不修改 AUT 的源代码(如在 Windows 上连接 Qt 子进程的额外设置中所述),必须执行以下步骤

  1. 将 AUT 的可执行文件名更改为点号之前的下划线(例如,将 myapp.exe 重命名为 myapp_.exe
  2. dllpreload.exe 复制到与 myapp_.exe 相同的目录中
  3. 将复制的 dllpreload.exe 重命名为 AUT 的原始名称(例如,重命名为 myapp.exe

现在,当执行 AUT 时,实际上是 dllpreload.exe 正在执行,并具有足够的智能来检查其被调用的名称,并将尝试执行具有相同名称但点号之前有下划线的可执行文件。

Squish for Windows 中的子进程连接

Squish for Windows 自动连接子进程。无需额外的设置或配置步骤。

Squish for macOS 中的子进程连接

要启用对原生 macOS 子进程的录制和回放,通过单击项目的 测试套件设置 打开测试套件设置,使 测试套件设置视图 出现,然后勾选 将应用程序启动的子进程连接 复选框。

©2024 Qt 公司有限公司。本文件内包含的文档贡献是各自拥有者的版权。
本文件提供的文档根据GNU 自由文档许可协议第 1.3 版许可,由自由软件基金发布。
Qt 和相关徽标是芬兰 Qt 公司及其在世界各地国家和地区的商标。所有其他商标都属于其各自的所有者。