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 并添加测试
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()