用途:该技能面向 Swift 测试的编写、审查、设计与迁移,默认使用 Swift Testing,在仍需要时使用 XCTest,并强调超越框架本身的测试设计判断。适用于 TDD 工作流,包括红绿重构、三角测量、由外向内与由内向外,以及遗留代码处理。
主要能力与规则:新增测试默认用 Swift Testing;向已有套件添加时沿用项目现有框架,两者可共存于同一测试目标。测试按行为命名而非类型,方法名说明条件与预期结果。每个套件提供 makeSUT() 工厂,集中构造、跟踪泄漏并转发源位置;不跨测试共享 SUT,也不在测试体内内联构造。手写测试替身,不用 mocking 框架;spy 用枚举数组记录消息,stub 返回预设值,二者分开。断言可观察行为而非交互,除非调用顺序本身是契约。不用 sleep 等待,改为轮询可观察状态变化并设超时,或 await 真实对象。信任绿色测试前先证明它能失败,修 bug 时尤其要先看到红。不为满足测试而添加生产代码,如 Equatable、放宽访问权限或测试专用钩子。通过辅助方法转发源位置,使失败报告在调用点。测试也是代码,需按生产标准重构、重命名和去重。
注意事项:Swift Testing 默认并行运行测试,共享存储 URL、磁盘产物或注册的 URLProtocol stub 的套件需加 .serialized;XCTest 原本串行,这是迁移中最常见的意外。测试默认不隔离到主 actor,UIKit/SwiftUI 套件需 @MainActor。@Test(arguments:) 的值必须 Sendable,套件类型本身不必。#expect 继续执行,#require 停止。XCTestExpectation 与 XCTWaiter 未桥接到 Swift Testing,不能安全用于 Swift 并发上下文。
限制与边界:不编造未提供的功能、收费、价格、平台或效果;资料未提供具体安装命令、版本要求或官方文档链接。分类依据其明确用途归入测试与质量。