由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 子进程的额外设置中所述),必须执行以下步骤
- 将 AUT 的可执行文件名更改为点号之前的下划线(例如,将
myapp.exe
重命名为myapp_.exe
) - 将
dllpreload.exe
复制到与myapp_.exe
相同的目录中 - 将复制的
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 公司及其在世界各地国家和地区的商标。所有其他商标都属于其各自的所有者。