FindSquish

查找 Squish,一个跨平台的自动化 GUI 测试框架,用于测试基于各种 GUI 技术构建的应用程序。Squish 支持对原生和跨平台工具包的测试,例如 Qt、Java 和 Tk。

结果变量

此模块定义了以下变量

Squish_FOUND

布尔值,指示是否找到 (请求版本) 的 Squish。为了向后兼容,SQUISH_FOUND 变量也设置为相同的值。

SQUISH_VERSION

找到的 Squish 的完整版本。

SQUISH_VERSION_MAJOR

找到的 Squish 的主版本。

SQUISH_VERSION_MINOR

找到的 Squish 的次版本。

SQUISH_VERSION_PATCH

找到的 Squish 的补丁版本。

SQUISH_INSTALL_DIR_FOUND

布尔值,指示是否找到 Squish 安装目录。

SQUISH_SERVER_EXECUTABLE_FOUND

布尔值,指示是否找到 Squish 服务器可执行文件。

SQUISH_CLIENT_EXECUTABLE_FOUND

布尔值,指示是否找到 Squish 客户端可执行文件。

缓存变量

以下缓存变量也可以设置

SQUISH_INSTALL_DIR

包含 binlib 等的 Squish 安装目录。

SQUISH_SERVER_EXECUTABLE

squishserver 可执行文件的路径。

SQUISH_CLIENT_EXECUTABLE

squishrunner 可执行文件的路径。

命令

此模块在找到 Squish 后提供以下命令:

squish_add_test

将 Squish 测试添加到项目

squish_add_test(
  <name>
  AUT <target>
  SUITE <suite-name>
  TEST <squish-test-case-name>
  [PRE_COMMAND <command>]
  [POST_COMMAND <command>]
  [SETTINGSGROUP <group>]
)

此命令基于 add_test() 命令构建,并将名为 <name> 的 Squish 测试添加到 CMake 项目。它支持 Squish 4 及更高版本。

在 CMake 测试阶段,将启动 Squish 服务器,在客户端执行测试,并在测试完成后停止服务器。如果其中任何一个步骤失败 (包括测试本身失败),都会引发致命错误,表明测试未通过。

参数为

<name>

测试的名称。这会作为第一个参数传递给 add_test() 命令。

AUT <target>

用作 AUT (被测应用程序) 的 CMake 目标名称,即将被测试的可执行文件。

SUITE <suite-name>

Squish 测试套件的完整路径或仅套件名称 (即套件的最后一个目录名)。在后一种情况下,调用 squish_add_test()CMakeLists.txt 必须位于套件的父目录中。

TEST <squish-test-case-name>

Squish 测试的名称,对应于套件目录内测试的子目录。

PRE_COMMAND <command>

在启动 Squish 测试之前执行的可选命令。将其作为字符串传递。这可以是一个单独的命令,也可以是命令和参数的 分号分隔列表

POST_COMMAND <command>

在 Squish 测试完成后执行的可选命令。将其作为字符串传递。这可以是一个单独的命令,也可以是命令和参数的 分号分隔列表

SETTINGSGROUP <group>

自 3.18 版本起已弃用: 此参数现在被忽略。它以前用于指定执行测试的设置组名称,而不是默认值 CTest_<username>

自 3.18 版本起已更改: 在之前的 CMake 版本中,此命令名为 squish_v4_add_test()

squish_v3_add_test

使用 Squish 3.x 版本时,将 Squish 测试添加到项目

squish_v3_add_test(
  <test-name>
  <application-under-test>
  <squish-test-case-name>
  <environment-variables>
  <test-wrapper>
)

注意

此命令适用于 Squish 3 版本,该版本已不再维护。请使用较新版本的 Squish 和 squish_add_test() 命令。

参数为

<name>

测试的名称。

<application-under-test>

用作 AUT (被测应用程序) 的可执行文件路径,即将被测试的可执行文件。

<squish-test-case-name>

Squish 测试的名称,对应于套件目录内测试的子目录。

<environment-variables>

环境变量及其值的分号分隔列表 (VAR=VALUE)。

<test-wrapper>

测试用例所需的一个或多个测试包装器的字符串 (分号分隔列表)。

示例

查找 Squish 和指定最低必需版本

find_package(Squish 6.5)

添加 Squish 测试

enable_testing()

find_package(Squish 6.5)
if(Squish_FOUND)
  squish_add_test(
    projectTestName
    AUT projectApp
    SUITE ${CMAKE_CURRENT_SOURCE_DIR}/tests/projectSuite
    TEST someSquishTest
  )
endif()

示例:如何使用 squish_v3_add_test() 命令

enable_testing()

find_package(Squish 3.0)
if(Squish_FOUND)
  squish_v3_add_test(
    projectTestName
    $<TARGET_FILE:projectApp>
    someSquishTest
    "FOO=1;BAR=2"
    testWrapper
  )
endif()