FindSquish¶
查找 Squish,一个跨平台的自动化 GUI 测试框架,用于测试基于各种 GUI 技术构建的应用程序。
find_package(Squish [<version>] [...])
Squish 支持对原生和跨平台工具包的测试,例如 Qt、Java 和 Tk。
结果变量¶
此模块定义了以下变量
Squish_FOUND3.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包含
bin、lib等的 Squish 安装目录。SQUISH_SERVER_EXECUTABLEsquishserver可执行文件的路径。SQUISH_CLIENT_EXECUTABLEsquishrunner可执行文件的路径。
命令¶
如果找到 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()