FindXCTest

3.3 版本中新增。

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

find_package(XCTest [...])

注意

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