1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
# Building with CMake
<!--
This source file is part of the Swift.org open source project
Copyright (c) 2023-2024 Apple Inc. and the Swift project authors
Licensed under Apache License v2.0 with Runtime Library Exception
See https://swift.org/LICENSE.txt for license information
See https://swift.org/CONTRIBUTORS.txt for Swift project authors
-->
## Add Swift Testing to your project
Add Swift Testing to your project using the standard `FetchContent` or
`find_package` mechanism, as appropriate for your project. For example:
```cmake
include(FetchContent)
FetchContent_Declare(SwiftTesting
GIT_REPOSITORY https://github.com/swiftlang/swift-testing.git
GIT_TAG main)
FetchContent_MakeAvailable(SwiftTesting)
```
## Define a test executable
To build a test executable using Swift Testing, define an executable target of
the form `[YOURPROJECT]PackageTests`, set the executable suffix to be
`.swift-testing`, and link to the `Testing` target as well as any project
targets you wish to test.
The following
example shows what this might look like for a hypothetical project called
`Example`:
```cmake
add_executable(ExamplePackageTests
ExampleTests.swift
...)
set_target_properties(ExamplePackageTests PROPERTIES
SUFFIX .swift-testing)
target_link_libraries(ExamplePackageTests PRIVATE
Example
Testing
...)
```
When building the test executable, the code you're testing will need to be built
with `-enable-testing`. This should only be enabled for testing, for example:
```cmake
include(CTest)
if(BUILD_TESTING)
add_compile_options($<$<COMPILE_LANGUAGE:Swift>:-enable-testing>)
endif()
```
## Add an entry point
You must include a source file in your test executable target with a
`@main` entry point. The following example uses the SwiftPM entry point:
```swift
import Testing
@main struct Runner {
static func main() async {
await Testing.__swiftPMEntryPoint() as Never
}
}
```
> [!WARNING]
> The entry point is expected to change to an entry point designed for other
> build systems prior to the initial stable release of Swift Testing.
## Integrate with CTest
To run your test using CTest, add the test using the appropriate command line.
```cmake
include(CTest)
add_test(NAME ExamplePackageTests
COMMAND ExamplePackageTests)
```
|