SuperAPI AI 工具集

swift-testing

测试与质量

查看项目

更新于 10-16 05:47

技能介绍

用途:该技能管理 Swift Testing 的语法、套件组织、trait、参数化、异步测试、known issues、attachments、exit tests,以及 XCTest 迁移边界。UI 实现应交给 UI 技能,并发设计(不只是异步测试语法)应交给 swift-concurrency。

使用前需检查 Xcode/Swift 工具链、目标平台、测试目标类型、当前使用的框架和 CI 调用方式;迁移无明确收益时,应保留 XCTest 与 Swift Testing 混合套件。版本相关 API 需对照 Swift Evolution、发布说明、SDK 接口或一手文档核实。

框架选择:支持 Swift 的新单元或集成测试优先用 Swift Testing;无迁移压力的现有 XCTest 套件保留并渐进迁移;UI 自动化使用 XCUITest/XCTest;XCTest 性能测量 API、Objective-C 异常测试或必须依赖 XCTestCase 的工具链、绑定 XCTest 的快照框架,继续使用 XCTest。不要将迁移变成全量重写。

主要能力:用 @Test 和 @Suite 表达行为与组织;用 #expect 做独立检查,用 try #require 做后续断言依赖的取值校验;用参数化测试覆盖同一行为的多种输入;用 trait 处理标签、条件、时间限制、已知 bug 和串行化,但语义须与测试匹配。测试默认并行运行,应隔离可变 fixture,不依赖声明顺序。测试命名应描述行为与结果。异步场景优先确定性信号、注入时钟和 confirmation,避免 sleep 或轮询;在行为支持时显式测试错误、取消和清理路径;UI 相关测试代码保持在 @MainActor。Attachments、warning severity、测试取消和 exit-test 捕获行为随工具链与平台变化;exit testing 并非所有 Apple 运行时都可用,iOS 应用目标应把致命路径逻辑隔离到可测试的非退出单元,或使用受支持的 host/tool 目标。

迁移映射:XCTAssert* 通常映射为 #expect,XCTUnwrap 映射为 try #require,基于 fulfillment 的异步测试可映射为 confirmation,setUp/tearDown 状态通常变为套件初始化与作用域清理。无 Swift Testing 等价 API 的 XCTest 用例应保留,渐进迁移期间可在同一测试计划中并行运行两种框架。

常见错误:在 @Test 函数中使用 XCTestExpectation;忘记 await 异步断言或任务导致测试提前通过;复制粘贴而非使用 @Test(arguments:);并行运行中共享可变状态造成不稳定;依赖任意 Task.sleep 时长而非确定性时钟或异步通知。

限制:工具链、平台和版本相关信息未在资料中给出具体版本号;exit testing 等能力的可用性需按实际运行时确认。