#require in Swift Testing
The #require macro in Swift Testing safely unwraps optionals and throws if nil, stopping the test immediately. It replaces the old XCTUnwrap pattern.
Before (XCTest):
func testUserName() throws {
let user = try XCTUnwrap(fetchUser())
XCTAssertEqual(user.name, "John")
}
After (Swift Testing):
@Test func userName() throws {
let user = try #require(fetchUser())
#expect(user.name == "John")
}
It also works with boolean conditions - the test fails if the condition is false:
@Test func adminAccess() throws {
let user = try #require(fetchUser())
try #require(user.isAdmin) // Fails test if not admin
// Continue with admin-only tests...
}
The key difference from #expect: #require stops execution on failure, while #expect records the failure but continues. Use #require when subsequent code depends on the condition being true.
Source: Apple Documentation
← Back to DevLog