FindSquish

查找 Squish,一个跨平台的自动化 GUI 测试框架,用于测试基于各种 GUI 技术构建的应用程序。

find_package(Squish [<version>] [...])

Squish 支持对原生和跨平台工具包的测试,例如 Qt、Java 和 Tk。

结果变量

此模块定义了以下变量

Squish_FOUND

3.3 版本中新增。

布尔值,指示是否找到了(请求版本 的)Squish。

Squish_VERSION

版本 4.2 中添加。

找到的 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_FOUND

自 4.2 版本起已弃用: 使用 Squish_FOUND,它具有相同的值。

布尔值,指示是否找到了(请求版本 的)Squish。

SQUISH_VERSION

自 4.2 版本起已弃用: Squish_VERSION 所取代。

找到的 Squish 的完整版本。

SQUISH_VERSION_MAJOR

自 4.2 版本起已弃用: Squish_VERSION 所取代。

找到的 Squish 的主版本号。

SQUISH_VERSION_MINOR

自 4.2 版本起已弃用: Squish_VERSION 所取代。

找到的 Squish 的次版本号。

SQUISH_VERSION_PATCH

自 4.2 版本起已弃用: Squish_VERSION 所取代。

找到的 Squish 的补丁版本号。

示例

查找 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()