FindXCTest

3.3 版本中新增。

查找 XCTest 框架,用于在 Xcode 项目中编写单元测试。

注意

Xcode 16 及更高版本包含 Swift Testing 框架,用于以 Swift 编程语言编写单元测试,该框架取代了 XCTest。

XCTest bundle 是一个 CFBundle(Core Foundation Bundle),具有特殊的产品类型和 bundle 扩展名。有关更多信息,请参阅 Apple Developer Library 中关于使用 Xcode 进行测试的文档。

结果变量

此模块定义了以下变量

XCTest_FOUND

一个布尔值,指示是否找到 XCTest 框架和可执行文件。

XCTest_INCLUDE_DIRS

包含 XCTest 框架头文件的包含目录,这些头文件是使用 XCTest 所必需的。

XCTest_LIBRARIES

链接 XCTest 框架所需的库。

缓存变量

以下缓存变量也可以设置

XCTest_EXECUTABLE

用于执行 XCTest bundle 的 xctest 命令行工具的路径。

命令

找到 XCTest 后,此模块将提供以下命令来帮助创建和运行 XCTest bundle:

xctest_add_bundle

创建一个 XCTest bundle 以测试给定的目标

xctest_add_bundle(<bundle> <testee> [<sources>...])

此命令创建一个名为 <bundle> 的 XCTest bundle,它将测试指定的 <testee> 目标。

参数为

<bundle>

要创建的 XCTest bundle 的名称。将在此 bundle 上设置 XCTEST 目标属性。

<testee>

要测试的目标名称。测试对象的支持类型为 Frameworks 和 App Bundles。

<sources>...

要添加到 bundle 的一个或多个源文件。如果未提供,则必须稍后使用 target_sources() 等命令添加。

注意

在使用此命令之前,必须设置 CMAKE_OSX_SYSROOT 变量。

xctest_add_test

将 XCTest bundle 添加到项目中,以便在 CTest 阶段运行

xctest_add_test(<name> <bundle>)

此命令将一个 XCTest bundle 注册到 CTest 以便被 ctest(1) 执行。测试将命名为 <name>,并将运行指定的 <bundle>

参数为

<name>

测试的名称,它将显示在 CTest 中。

<bundle>

XCTest bundle 的目标名称。

示例

查找 XCTest 并添加测试

find_package(XCTest)

add_library(foo SHARED foo.c)

if(XCTest_FOUND)
  xctest_add_bundle(TestAppBundle foo source.swift)
  xctest_add_test(app.TestAppBundle TestAppBundle)
endif()