XCTAssert 系列与抛出断言
安全地使用 XCTAssertEqual、XCTAssertThrowsError 和 XCTUnwrap。
XCTAssert 系列与抛出断言 是 CoddyKit 上的免费 Swift Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Swift Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Swift Academy 课程共包含 4 节课。
XCTAssert 和 XCTAssertTrue
如果条件为假,XCTAssert 和 XCTAssertTrue 就会失败。
XCTAssert(user.isLoggedIn)
XCTAssertTrue(cart.isEmpty, "Cart should be empty after clear()")XCTAssertFalse
如果条件为真,XCTAssertFalse 就会失败。
XCTAssertFalse(session.isExpired, "Fresh session should not be expired")XCTAssertEqual
如果两个值不相等,XCTAssertEqual 就会失败。两个值都必须遵循 Equatable 协议。
XCTAssertEqual(calculator.add(2, 3), 5)
XCTAssertEqual(user.name, "Alice", "Name should match the fixture")XCTAssertNotEqual
如果两个值相等,XCTAssertNotEqual 就会失败。
XCTAssertNotEqual(originalHash, updatedHash)XCTAssertNil 和 XCTAssertNotNil
测试可选值:前者在值不为 nil 时失败,后者在值为 nil 时失败。
XCTAssertNil(service.error, "No error expected after successful fetch")
XCTAssertNotNil(result, "Result should be non-nil on success")XCTAssertThrowsError
如果表达式没有抛出错误,则测试失败。您也可以选择检查抛出的错误。
XCTAssertThrowsError(try parser.parse("invalid json")) { error in
XCTAssertEqual(error as? ParseError, .invalidInput)
}XCTAssertNoThrow
如果表达式确实抛出错误,则测试失败。
XCTAssertNoThrow(try parser.parse(validJSON))XCTUnwrap
XCTUnwrap 会解包可选值,并在其为 nil 时使测试失败;这比 guard let 加 XCTFail 更简洁。
let user = try XCTUnwrap(service.currentUser)
XCTAssertEqual(user.name, "Bob")带精度的 XCTAssertEqual
比较浮点数时,请指定精度值,以处理精度误差。
XCTAssertEqual(result, 3.14159, accuracy: 0.0001)自定义失败消息
所有 XCTAssert 函数都接受可选的消息参数,以生成更清晰的失败输出。
XCTAssertEqual(items.count, 3, "Expected 3 items after insert, got \(items.count)")XCTExpectFailure
标记预期的失败,使其在持续集成中报告为成功;这适用于已知但尚未修复的错误。
XCTExpectFailure("Known issue: rdar://12345") {
XCTAssertEqual(brokenFunction(), expectedValue)
}快速检查
哪个 XCTest 函数可以安全地解包可选值,并在其为 nil 时使测试失败?
课程回顾
XCTest 断言系列包括:XCTAssert/True/False、XCTAssertEqual/NotEqual、XCTAssertNil/NotNil、XCTAssertThrowsError/NoThrow 和 XCTUnwrap。请始终添加描述性消息。对于已跟踪的已知失败,请使用 XCTExpectFailure。
常见问题解答
「XCTAssert 系列与抛出断言」课时是免费的吗?
是的 — 「XCTAssert 系列与抛出断言」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Swift Academy 课程的其余内容,请升级到 CoddyKit PRO。 Swift Academy 课程共包含 4 节课。
「XCTAssert 系列与抛出断言」这节课中我会学到什么?
安全地使用 XCTAssertEqual、XCTAssertThrowsError 和 XCTUnwrap。 你通过在浏览器中直接运行的动手代码来练习 Swift Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Swift Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Swift Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。
「XCTAssert 系列与抛出断言」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Swift Academy 课中编写并运行代码吗?
能。每节 Swift Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- XCTestCase 设置、清理与测试方法
- XCTAssert 系列与抛出断言
- 基于协议的模拟与依赖注入
- 异步测试与性能测量