FindXCTest¶
Added in version 3.3.
Finds the XCTest framework for writing unit tests in Xcode projects:
find_package(XCTest [...])
Note
Xcode 16 and later includes the Swift Testing framework for writing unit tests in the Swift programming language, which supersedes XCTest.
An XCTest bundle is a CFBundle (Core Foundation Bundle) with a special product type and bundle extension. See the Apple Developer Library for more information in the Testing with Xcode documentation.
Result Variables¶
This module defines the following variables:
XCTest_FOUND
Boolean indicating whether the XCTest framework and executable are found.
XCTest_INCLUDE_DIRS
Include directories containing the XCTest framework headers needed to use XCTest.
XCTest_LIBRARIES
Libraries needed to link against to use XCTest framework.
Cache Variables¶
The following cache variables may also be set:
XCTest_EXECUTABLE
The path to the
xctest
command-line tool used to execute XCTest bundles.
Commands¶
When XCTest is found, this module provides the following commands to help create and run XCTest bundles:
- xctest_add_bundle¶
Creates an XCTest bundle to test a given target:
xctest_add_bundle(<bundle> <testee> [<sources>...])
This command creates an XCTest bundle named
<bundle>
that will test the specified<testee>
target.The arguments are:
<bundle>
Name of the XCTest bundle to create. The
XCTEST
target property will be set on this bundle.<testee>
Name of the target to test. Supported types for the testee are Frameworks and App Bundles.
<sources>...
One or more source files to add to the bundle. If not provided, they must be added later using commands like
target_sources()
.
Note
The
CMAKE_OSX_SYSROOT
variable must be set before using this command.
- xctest_add_test¶
Adds an XCTest bundle to the project to be run during the CTest phase:
xctest_add_test(<name> <bundle>)
This command registers an XCTest bundle to be executed by
ctest(1)
. The test will be named<name>
and will run the specified<bundle>
.The arguments are:
<name>
Name of the test as it will appear in CTest.
<bundle>
Target name of the XCTest bundle.
Examples¶
Finding XCTest and adding tests:
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()