Swift Testing Code Review 是一个面向 Swift Testing 代码的审查技能,出自 existential-birds/beagle。它用于对 Swift 测试代码进行结构化审查,重点不是通用代码质量,而是 Swift Testing 测试代码是否正确、恰当地使用了该框架提供的宏与组织机制。
用途 该技能用于审查一组明确的 .swift 文件(或用户指定的单个文件)中属于 Swift Testing 的代码。资料给出三个“硬性门槛”,需按顺序完成后再记录审查发现:
- 范围:需要有一份明确的 .swift 路径清单(或用户指定的单个文件)。若工作笔记中未记录路径,或一句话说明“范围内没有 Swift 文件”,则停止且不产生发现。
- Swift Testing 判定:对每个被视为 Swift Testing 代码的路径,确认该文件中出现 import Testing 或 @Test / #expect / #require / @Suite(可打开或搜索)。要求每个被审查文件至少匹配一项,否则以一句话说明原因(例如仅使用 XCTest)将该文件排除在 Swift Testing 审查之外。
- 证据与协议:在断言任何问题前加载 review-verification-protocol。每条发现需满足该技能的锚点规则;违反审查清单的项需引用 [FILE:LINE] 证据。若报告零问题,则需在审查总结中声明已应用协议、无 Swift Testing 问题(或等价表述)。
主要能力与快速参考 技能提供按主题划分的参考资料,用于在审查相应内容时加载:
- #expect 与 #require 的取舍、表达式捕获、错误测试:references/expect-macro.md
- 带参数的 @Test、traits、zip() 陷阱:references/parameterized.md
- confirmation、异步序列、completion handler:references/async-testing.md
- @Suite、tags、并行执行、.serialized:references/organization.md
审查清单 资料列出的检查点包括:
- 表达式直接嵌入 #expect(而非预先计算为布尔值)。
- #require 仅用于前置条件,#expect 用于断言。
- 错误测试检查具体类型(而非泛化的 (any Error).self)。
- 成对的参数化测试使用 zip()(而非笛卡尔积)。
- 参数化测试的期望值不应镜像实现逻辑。
- 异步序列使用 confirmation(expectedCount:) 测试。
- completion handler 使用 withCheckedContinuation,而非 confirmation。
- .serialized 仅在必要时(共享资源)使用。
- 互斥的兄弟串行套件应嵌套在父级之下。
- 不假设 @Test 函数之间状态会持久化。
- 被禁用的测试带有说明和 bug 链接。
使用方式 先确定审查范围与文件归属,再加载 review-verification-protocol,然后按所审查的代码类型加载对应 references 文档,依据审查清单与审查问题逐项核对,并以 [FILE:LINE] 形式给出证据。资料还提供若干审查问题,例如:#expect 中预先计算的布尔值是否会丢失诊断上下文;#require 是否过早终止测试而非暴露全部失败;多参数参数化测试是否意外产生笛卡尔积;zip() 是否因数组长度不等而静默丢弃测试用例;completion handler 是否被错误地用 confirmation 测试。
适用场景 适合对采用 Swift Testing 的 Swift 项目执行测试代码审查,尤其是涉及 #expect、#require、参数化测试、异步测试与测试组织(@Suite、tags、串行化)的场景。
限制 该技能依赖先加载 review-verification-protocol 才能断言问题;对被判定为非 Swift Testing 的文件(如仅使用 XCTest)会排除在审查之外。资料未提供安装命令、收费方式、价格或具体平台信息,这些内容暂未提供。