从源代码包中安装适用于 Qt 的 Squish

通常情况下,客户不需要构建整个Squish,只需构建与AUT二进制兼容的部分。这包括 squishserverstartaut 以及托盘库。

快速安装

如果AUT使用非标准的编译器选项或非标准的Qt配置,则必须使用用于构建AUT的相同编译器和Qt库来从源代码编译Squish的部分。

快速安装方法是这样做的

  • 将需要从源代码构建的组件限制为必须与AUT二进制兼容的组件。
  • 将它们构建和安装到 SQUISHDIR

可以按照分发和共享安装中的说明,将定制版本的Squish分发到运行相同操作系统的不同计算机上。

基本要求

构建和安装必须满足某些要求。其中一些要求涉及Squish本身所构建的Qt库,还有一些要求涉及构建过程中使用的工具。

  • 必须可获取Qt 4.8或更高版本。
  • 必须具备与用于构建Qt的版本相兼容的C++编译器。

支持的编译器

Squish已经在各种Windows和类Unix系统上进行了测试,以及使用了几种不同的编译器。通常,我们对每个Qt的二进制发布版、每个我们的官方平台,都发布一个针对Qt的Squish,使用用于构建Qt的相同编译器。如果可能,您在构建Squish时也应该这样做。

确切的编译器要求取决于您使用的Qt版本。下面提供了一些链接以获取更多信息。

配置和构建

以下步骤基于Linux/Unix系统,但将以类似方式应用于其他操作系统。

假定为Squish源代码包已解压到目录 SQUISHSRC 中。主版本号应该与您安装的Squish相同。

首先创建一个shell环境,该环境首先可以在您的 PATH 中找到正确的编译器以及AUT版本的Qt的 qmake。这样,您就无需向 configure 指定 --with-qmake=。从该shell中输入 qmake --version 以验证其正确性。

$ qmake --version
QMake version 3.1
Using Qt version 6.6.3 in /usr/local/Qt/6.6.3/gcc_64/lib

进入 SQUISHSRC,在该目录下创建一个 SQUISHBUILD 目录,然后进入该目录,并运行配置脚本

$ ../configure --disable-all --enable-idl --enable-qt --enable-server
SQUISHBUILD> ..\configure --disable-all --enable-idl --enable-qt --enable-server

configure 完成后,开始构建过程

$ ./build
SQUISHBUILD> build

如果遇到问题,请参阅解决构建错误

安装到SQUISHDIR

如果不是以管理员身份运行或在SQUISHDIR上给予您写入权限,那么此步骤在Windows上可能会失败。

安装之前,进入 SQUISHDIR 并准备安装。

$ rm -r lib/extensions/qt
$ rm lib/libsquishqt*
$ cp etc/paths.ini etc/paths.ini.bak
SQUISHDIR> copy etc\paths.ini etc\paths.ini.bak
SQUISHDIR> rd /q /s lib\extensions\qt
SQUISHDIR> del /q bin\winhook.dll bin\squishqt*.dll

然后,进入 SQUISHBUILD 并执行以下安装命令。

$ ./build install DESTDIR=SQUISHDIR
SQUISHBUILD> build install DESTDIR=SQUISHDIR

最后,我们回到 SQUISHDIR 并恢复 etc/paths.ini

$ mv etc/paths.ini.bak etc/paths.ini
SQUISHDIR> move /Y etc\paths.ini.bak etc\paths.ini

修改后的Squish二进制包应该准备好与您的应用程序一起使用。

详细安装说明

本节更详细地描述了如何使用其他配置执行Squish的构建和安装。

构建SquishRunner的必备条件

根据配置,必须满足不同的要求。与AUT二进制兼容的组件必须使用Qt的正确版本。如果您正在构建squishrunner,将出现与您想使用的脚本语言相关的一组要求。Squish自带内置的JavaScript解释器,因此不依赖于第三方JS解释器。但是,

  • Qt必须配置并构建为共享库。
  • 要使用Python作为测试脚本的语言,您必须安装Python 2.7+或Python 3.8+,同时包含开发头文件。
  • 要使用Perl作为测试脚本的语言,您必须安装Perl 5.18或任何更高版本的5.x版本。
  • 要使用Ruby作为测试脚本的语言,您必须安装Ruby 1.9。
  • 要使用Tcl作为测试脚本的语言,您必须安装Tcl 8.4或更高版本。

在构建squishrunner之前,您必须确保已经安装了您为测试脚本所选择的语言。这不包括Squish内置的JavaScript。

有关您需要安装的内容以及从何处获取它,请参阅以下表格,以了解您的平台和脚本语言。

语言建议
PythonPython解释器可执行文件必须在PATH中。大多数Unix系统已预装Python,但如果没有,可以从系统的软件包管理工具中获取该软件包,或者您可以从https://www.pythonlang.cn/download/下载版本。如果您安装软件包,您必须安装-dev-devel版本,因为Squish在构建时需要访问头文件。
PerlPerl解释器可执行文件必须在PATH中,除非您使用--with-perl配置开关指定其位置。大多数Unix系统已预装Perl,但如果没有,可以从系统的软件包管理工具中获取该软件包,或者您可以从http://www.activestate.com/activeperl/downloads/下载版本。如果您安装软件包,您必须安装-dev-devel版本,因为Squish在构建时需要访问头文件。
RubyRuby解释器可执行文件必须在PATH中,除非您使用--with-ruby配置开关指定其位置。大多数Unix系统已预装Ruby,但如果没有(或版本太旧),可以从系统的软件包管理工具中获取该软件包,或者您可以从https://www.ruby-lang.org.cn/en/downloads/下载版本。如果您安装软件包,您必须安装-dev-devel版本,因为Squish在构建时需要访问头文件。
Tcl大多数Unix系统已安装Tcl,但如果没有,可以从系统的软件包管理工具中获取该软件包,或者您可以从http://www_activestate.com/activetcl/downloads下载版本。如果您安装软件包,您必须安装-dev-devel版本,因为Squish在构建时需要访问头文件。
语言建议
Python我们建议安装从https://www.pythonlang.cn/download/可用的最新Python 3软件包。
Perl我们建议安装ActiveState的Perl软件包。您可以从http://www.activestate.com/activeperl/downloads/下载它。
RubyRuby的官方安装页面为https://www.ruby-lang.org.cn/en/downloads/。大多数Linux发行版都将它作为标准软件包。
Tcl我们推荐安装ActiveState的Tcl构建版本。您可以从http://www.activestate.com/activetcl/downloads/下载。
语言建议
PythonmacOS自带Python版本——包括头文件,满足Squish的需求。
PerlmacOS自带Perl版本——包括头文件,应该足够满足Squish的需求。
Ruby撰写本文时,macOS预装的是Ruby 1.8版本,这太老了。要在macOS上使用Ruby,必须构建并安装Ruby 1.9。
TclmacOS自带Tcl版本——包括头文件,满足Squish的需求。

要测试嵌入式Qt应用程序,请参阅从嵌入式源代码包中安装Squish for Qt

如果您想将JavaScript用作测试脚本的语言,则无需额外要求:Squish已内置JavaScript解释器。默认情况下,JavaScript解释器会自动构建,除非使用configure程序的--disable-js开关禁用JavaScript支持;请参阅Configure开关

配置开关

当调用时,configure会尝试自动检测您的系统配置系统和Squish的优化配置。在某些情况下,自动检测的结果或Squish使用的默认值可能不符合您的期望。在这些情况下,可以通过向configure传递各种命令行选项来覆盖检测到的默认设置。

这里有一些示例

--with-qmake=C:\Qt\6.6.3\msvc2019_64\bin\qmake.exe告诉configure工具的位置,为Squish提供有关您的Qt安装的必要信息。如果正确地首先在您的PATH中找到qmake,则此操作为可选。
--with-squishidl=/Applications/Squish_for_Qt/bin/squishidl告诉configuresquishidl可执行文件的位置。当构建Squish for Qt6时,这不是可选的。通常,我们需要Squish的安装版本来构建Squish,如部分构建中所述。

要查看完整列表,请在命令行中执行configure --help或参阅configure

部分构建

默认情况下,configure构建它找到的所有组件。

您可以通过为configure设置特定的命令行开关来做部分构建,这些开关可以用来排除或包含各种Squish组件。

Squish可以通过使用--enable-component来告知构建特定的组件(如果它能够找到它),用要构建组件的名称替换component。类似地,Squish可以被告知构建特定的组件,使用--disable-component并再次用不希望Squish构建的组件名称替换component。在这种情况下,您可以使用尽可能多的启用和禁用命令行开关。以下列出可以选择启用或禁用的组件。

--disable-all使用此选项禁用所有Squish组件。客户应禁用此选项以获取最小构建,然后启用所需的组件。
--enable-qt我们正在为自定义Qt构建Squish。启用此开关。
--enable-serversquishserver应用程序(用于控制AUT)。启用此开关。
--disable-runner除非出于某种奇怪的原因需要针对自定义脚本引擎构建squishrunner,否则您可以使用二进制安装版本的安装版本。禁用此开关。
--disable-python3Python 3 解释器。除非您正在构建 squishrunner,否则不需要启用此功能。
--enable-32bit如果启用,将强制进行 32 位构建(如果工具链支持)。
--enable-pure-qt4如果启用,告诉 Squish 在测试 Qt 4 应用程序时不要使用 Qt 3 支持。在很多情况下,当旧版本无法自动检测到 Qt3Support 时,Squish 可以自动检测到 AUT 中的 Qt3Support 的缺失。现在,此选项仅在 Qt 安装程序包含 Qt3Support 但没有与 AUT 一起分发时才需要。
--enable-qtdebug-libs使用 Qt 调试库构建 Squish。如果您的 AUT 是针对 Qt 的调试版本构建的,则需要此选项。调试库的文件名不同。
--disable-javaJava 测试(顾客不应有构建 Squish 用于 Java 或其他版本/工具包的理由)。不要启用。

您可以在内部依赖性的约束范围内自由组合这些开关。这正是 all 组件很有用之处。

../configure --disable-all --enable-qt --enable-server

此操作禁用除服务器和 Qt 包装器之外的所有组件。基本上,这构建了所有与 AUT 必须二进制兼容的组件。

覆盖构建变量

当运行 configure 时,它会将其创建的配置输出到文件 config.hBuild.conf 中——基于它自动检测到的组件,但尊重任何了我们用来覆盖自动检测的命令行开关。

config.h 文件包含在 Squish 的源代码文件中,而 Build.conf 文件用作构建工具的输入文件。如果自动检测产生了不满意的结果,您可以在运行构建应用程序之前修改这些文件。写入 Build.conf 的变量可以很容易地更改,而无需手动编辑文件。这可以通过在 configure 命令行中指定 VARIABLE=valueVARIABLE+=value 的形式来实现。这些参数将替换(如果使用 =)或扩展(如果使用 +=)命名变量。

以下是一个示例,该示例将变量的值替换为新值;在这种情况下,更改默认的优化标志

configure "CXXOPT=-O1"

另一个示例,在这种情况下,我们扩展了两个变量的存储值——此操作的效果是更改 gcc 编译器的默认操作模式,强制其在 64 位系统上进行 32 位构建

configure "CXXFLAGS+=-m32" "LFLAGS+=-m32"

如何配置不同的编译器

configure 脚本将在您的 PATH 中搜索 C++ 编译器、Squish 依赖的 Qt 库、Squish 支持的第三方脚本语言(Python、Perl、Ruby 和 Tcl)的解释器和头文件,以及 Squish 可能需要的其他系统组件,例如 Java 运行环境。输出指示已检测到哪个编译器。如果您在测试 Qt 应用程序,应使用用于构建 AUT 的相同编译器来构建 Squish。

如果您想强制 configure 使用它检测到的不同编译器,请设置 CXX 环境变量为 Squish 要使用的编译器的可执行文件,以下示例说明了这一点。

如果 configure 在您的 PATH 中检测到了 g++,但您想使用较旧的 g++-9,则按如下运行 configure

$ CXX=g++-9 ../configure

如果 configure 检测到 MSVC++,但您想使用 Intel C++,则按如下运行 configure

SQUISHBUILD> set CXX=icl
SQUISHBUILD> ..\configure

接下来,运行 Squish build 工具来编译 Squish。

$ ./build
SQUISHBUILD> build

构建 Squish 可能需要相当长的时间,因为在这个过程中,构建工具还会为 Qt 库创建包装器。

静态链接的 Qt 库

使用静态链接的 Qt 库构建的应用程序可以记录和运行测试。以下是要求总结

  1. 必须正确安装 Qt 的正确版本/静态构建版本。
  2. Squish 源包必须解压,使用正确选项进行配置,并针对静态 Qt 库进行构建。
  3. 您的 AUT 必须被配置以使用内置钩子。
  4. 对于 squishidlsquishserversquishidesquishrunner,您将使用与源包版本号匹配的 Squish 二进制包。
  5. squishserver 必须被配置以便为 AUT 设置 usesBuiltinHook

AUT 仪器化

有关如何扩展您的 AUT 构建规则和(如果需要)代码以使静态链接的 Qt 应用程序能够与先前构建的包一起工作的说明,请参阅使用 Qt 内置钩子

最后创建一个新的测试套件并使用适当的设置,选择新配置的 AUT 二进制文件作为测试应用。

现在您应该能够启动 AUT 并记录和重播测试。

©2024 Qt 公司有限公司。此处包含的文档贡献是各自所有者的版权。
此处提供的文档受 GNU 自由文档许可协议版本 1.3 的条款约束,该协议由自由软件基金会发布。
Qt 及 respective 图标是芬兰的 Qt 公司和/或在其他国家的商标。所有其他商标均为其各自所有者的财产。