2022 EssentialsDeveloper Tools
WWDC22 · 22 min · Essentials / Developer Tools
Author fast and reliable tests for Xcode Cloud
Discover how you can create effective testing plans for Xcode Cloud, Apple’s continuous integration and continuous delivery service. We’ll show you how testing can be an essential tool to consistently verify your code works correctly. Learn how you can author fast, reliable, and efficient tests for Xcode Cloud, avoid irrelevant failures, and verify your code changes quickly.
Watch at developer.apple.com ↗Code shown on screen · 10 snippets
setUp()
override func setUp() async throws {
} setUp() example
var truck: Truck!
override func setUp() async throws {
let directoryURL = FileManager.default.temporaryDirectory
let fileName = UUID().uuidString
let fileURL = directoryURL.appendingPathComponent(fileName, isDirectory: false)
let data = await mockDonutMenuData()
try data.write(to: fileURL)
truck = Truck(menuURL: fileURL)
} Environment variable example
var truck: Truck!
func testOrderDonut() throws {
let host = ProcessInfo.processInfo.environment["BASE_URL"]
let expectation = XCTestExpectation(description: "Order donut")
truck.order(with: .sprinkles, host: host) { error, donut in
XCTAssertTrue(donut.hasSprinkles)
expectation.fulfill()
}
wait(for: [expectation], timeout: 5)
} XCTSkip example
var truck: Truck!
func testOrderDonut() throws {
let host = ProcessInfo.processInfo.environment["BASE_URL"]
try XCTSkipIf(host == "prod.example.com")
let expectation = XCTestExpectation(description: "Order donut")
truck.order(with: .sprinkles, host: host) { error, donut in
XCTAssertTrue(donut.hasSprinkles)
expectation.fulfill()
}
wait(for: [expectation], timeout: 5)
} XCTSkip example
var truck: Truck!
func testOrderDonut() throws {
let host = ProcessInfo.processInfo.environment["BASE_URL"]
try XCTSkipIf(host == "prod.example.com")
let expectation = XCTestExpectation(description: "Order donut")
truck.order(with: .sprinkles, host: host) { error, donut in
XCTAssertTrue(donut.hasSprinkles)
expectation.fulfill()
}
wait(for: [expectation], timeout: 5)
} XCTestExpectation example
var truck: Truck!
func testOrderDonut() throws {
let host = ProcessInfo.processInfo.environment["BASE_URL"]
try XCTSkipIf(host == "prod.example.com")
let expectation = XCTestExpectation(description: "Order donut")
truck.order(with: .sprinkles, host: host) { error, donut in
XCTAssertTrue(donut.hasSprinkles)
expectation.fulfill()
}
wait(for: [expectation], timeout: 5)
} Increase XCTestExpectation example
var truck: Truck!
func testOrderDonut() throws {
let host = ProcessInfo.processInfo.environment["BASE_URL"]
try XCTSkipIf(host == "prod.example.com")
let expectation = XCTestExpectation(description: "Order donut")
truck.order(with: .sprinkles, host: host) { error, donut in
XCTAssertTrue(donut.hasSprinkles)
expectation.fulfill()
}
wait(for: [expectation], timeout: 10)
} Async/await example
var truck: Truck!
func testOrderDonut() async throws {
let host = ProcessInfo.processInfo.environment["BASE_URL"]
try XCTSkipIf(host == "prod.example.com")
let donut = try await truck.orderDonut(with: .sprinkles, host: host)
XCTAssertTrue(donut.hasSprinkles)
} XCTExpectFailure example
var truck: Truck!
func testOrderDonut() async throws {
let host = ProcessInfo.processInfo.environment["BASE_URL"]
try XCTSkipIf(host == "prod.example.com")
let donut = try await truck.orderDonut(with: .sprinkles, host: host)
XCTAssertTrue(donut.hasSprinkles)
} XCTExpectFailure example
var truck: Truck!
func testOrderDonut() async throws {
let host = ProcessInfo.processInfo.environment["BASE_URL"]
try XCTSkipIf(host == "prod.example.com")
XCTExpectFailure("<https://dev.myco.com/bug/98> Donut ordering service is down")
let donut = try await truck.orderDonut(with: .sprinkles, host: host)
XCTAssertTrue(donut.hasSprinkles)
} Related sessions
-
29 min -
14 min -
15 min -
21 min -
1 min -
12 min -
17 min -
22 min -
9 min -
18 min -
7 min -
16 min -
54 min -
37 min