WWDC26 · 267Migrate to Swift Testing
当前 0:07 7s官方 ↗
Session 267·Migrate to Swift Testing·深度内容已验证 · 5 sections · 6 cards
深度内容已验证

视频证据

已具备 session-specific claims、anchors、evidence refs、脚本分段和 CDP 验证;这是可审核完成态。

正在接入 Apple HLS 视频源…

脚本分段

分段导航

每段对应一个视频时间段,说明“讲什么、支撑哪条洞察、对应哪些锚点”。完整字幕不在公开页复刻。

Swift Testing 是现代测试库,支持 Swift 并发和并行运行

deep_candidate

Jerry(Swift Testing 团队)开场:Xcode 16 引入的现代测试库。@Test macro 声明,#expect macro 断言。Swift 并发支持,并行运行。XCTest 仍适用于 UI 自动化、性能测试和 Objective-C 异常场景。

SwiftTestingCLIXCTestXcode
确认 Swift Testing 与 XCTest 的分工边界。 · source segments: 0–66

Interoperability:跨框架 API 调用三种模式

deep_candidate

新旧测试可在同一 target 共存。Limited(cross-framework 降级为警告)、complete(保持为错误)、strict(触发致命错误立即停止)。Xcode 27 默认启用 interoperability。

XcodeSwiftTestingXCTFailCLI
确认三种模式的应用场景。 · source segments: 67–133

Complete 和 Strict 模式:从不丢失问题到精确定位

deep_candidate

Complete mode 使问题保持为错误不丢失。Strict mode 遇到 XCTest API 时立即停止,精确定位替换位置。Package 项目通过 swift-tools-version 6.4 启用 complete mode。

SwiftXCTestAPITestingXcode
确认不同模式在迁移阶段的作用。 · source segments: 134–201

常见模式替换:XCTSkip、continueAfterFailure、参数化测试

deep_candidate

XCTSkip→Test.cancel,continueAfterFailure→#require。条件测试用 enabled/disabled trait。参数化测试将循环简化为函数参数,自动并行运行,失败结果清晰可辨。

SwiftTestingXcodeXCTestAPI
确认参数化测试对比循环的优势。 · source segments: 202–268

Exit tests + 开源生态:测试崩溃路径 + 社区参与

deep_candidate

Exit tests 在子进程中测试 precondition failure 等崩溃路径,不影响其他测试。Swift Testing 是 SwiftLang 开源项目,支持 FreeBSD,通过 Swift Evolution 演进。

SwiftCLITestingXcodeBird
确认 exit tests 在测试非确定性输出崩溃恢复中的价值。 · source segments: 269–335
下左 · 时间锚点

Anchor Skeleton

0:07↗
1:08↗
2:14↗
3:19↗
4:24↗
5:40↗
6:46↗
7:51↗
9:02↗
10:15↗
11:21↗
12:28↗
13:35↗
14:49↗
15:49↗
17:00↗
18:08↗
19:07↗
20:09↗
21:15↗
下右 · 深度内容已验证

Workbench Status

I1deep_candidate

结论 1:Interoperability 三种模式控制迁移节奏

Limited(初期,不阻断测试)、complete(中期,不丢失问题)、strict(后期,精确定位需替换的 XCTest API)。团队按节奏逐步升级。

I2deep_candidate

结论 2:参数化测试将循环简化为函数参数

嵌套循环耗时且失败不明确。参数化测试将输入定义为参数,Swift Testing 自动并行执行所有组合。失败时清晰显示哪个输入失败。 这是该 session 的核心论点,支撑整个叙事链在该主题上的完整性。

I3deep_candidate

结论 3:Exit tests 在子进程中测试崩溃路径

Precondition failure 等崩溃路径传统上难以测试。Exit tests 在隔离子进程中运行,崩溃不影响主进程。 这是该 session 的核心论点,支撑整个叙事链在该主题上的完整性。

I4deep_candidate

结论 4:Swift Testing 是增量进化而非替代

Interoperability 让新旧共存。UI 自动化、性能测试、Objective-C 异常仍需 XCTest。参数化测试和 exit tests 是 XCTest 无法实现的增量价值。

I5deep_candidate

结论 5:Swift Testing 与 Evaluations 分工互补。

Swift Testing 管理确定性代码行为,Evaluations 管理模型输出质量和 agentic 行为。AI 工程需要两类质量体系并存,而不是互相替代。

I6deep_candidate

总判断:267 让 Swift 工程测试迁移进入现代质量体系。

新测试用 Swift Testing,存量 XCTest 逐步替换。与 298 Evaluations 互补:确定性测试用 Swift Testing,非确定性评估用 Evaluations。(本 session 在全局地图中的位置:工程测试现代化——与 298/299(AI evaluations)互补,确定性+非确定性测试全覆盖。)