Tagging Tests
You can assign custom tags to tests that have common characteristics, even if they're in different suites or files, and they appear in the Test navigator. For example, you might tag all tests that validate a specific feature or subsystem. You can assign a tag to a test function or to a test suite:
@Suite(.tags(.formatting))
struct MetadataPresentation {
let video = Video(fileName: "By the Lake.mov")
@Test func rating() async throws {
#expect(video.contentRating == "G")
}
@Test func formattedDuration() async throws {
let videoLibrary = try await VideoLibrary()
let video = try #require(await videoLibrary.video(named: "By the Lake"))
#expect(video.formattedDuration == "0m 19s")
}
}
You can run all the tests with a particular tag and filter them in the Test Report. This can be helpful if it shows that multiple tests with the same tag are failing.
Swift Testing Is Open Source and Cross-Platform
Swift Testing is open source and soon will transition to the recently announced swiftlang organization. It works on all Apple operating systems that support Swift Concurrency, as well as on Linux and Windows. It has a common codebase across all these platforms, so your tests behave much more consistently when moving between platforms, and there will be better functional parity between them.
Swift Testing has an open feature-proposal process, and Apple wants you to get involved by writing or participating in feature proposals, improving the documentation, or filing bug reports.
Download the final projects by clicking the Download Materials button at the top or bottom of this article.
In this article, you learned about Swift Testing building blocks:
@Test
-
#expect
and #require
- Suites
- Traits
The key Apple links are:
I hope you're excited about Swift Testing and will soon have complete test coverage for all your apps!