FindXCTest

Added in version 3.3.

Finds the XCTest framework for writing unit tests in Xcode projects.

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