Go 测试技能
针对 Go 测试、Bubbletea TUI 和黄金文件的实用测试模式指南。
该技能是纯指导性指南,不包含任何代码执行、外部网络调用或敏感数据处理。它指示使用 t.TempDir() 和 skippable integration tests,体现最小权限和隔离原则。技能明确指定了 golden file 更新流程和测试范围,提供了清晰的数据流。扣分原因:缺少明确的用户确认机制(如是否需要在运行前获得用户允许),外部命令执行(如 go test)的权限和影响未详细说明,且发布者身份未经验证,来源归属有限。
指令自洽,决策门和步骤明确,提供具体代码示例。依赖如 bubbletea 和 teatest 在 go.mod 中列出,属于主流库。但静态审查无法执行测试,未提供针对异常输入(如无效测试参数)的显式故障反馈机制。扣分原因:未提供故障处理指南,如测试失败时如何诊断,且关键路径未经验证。
明确针对 Go 测试、bubbletea TUI 和 golden files 场景,触发条件精确,决策门和步骤清晰。提供中文支持较少,但技能本身不依赖海外服务。扣分原因:适用范围虽清晰,但未明确边界(如不适用于非 Go 项目),且无中文文档,可能影响中文用户使用。
文档结构良好,包含结构和步骤,有示例和 FAQ(未提供但引用参考),声明了 Apache-2.0 许可和版本 1.0,作者信息清晰。但缺少 changelog、维护责任说明和已知限制披露。扣分原因:版本和许可有,但无版本历史和维护路径,且示例文件部分不完整。
技能明确完成测试编写和审查任务,决策门和输出契约清晰,提供命令行示例,边际价值明显。但静态审查无执行证据,无法验证输出质量,且未提供比较不同测试方法的成本效益分析。扣分原因:无执行证据,输出直接可用性未验证。
技能内容为纯文本,无可执行测试,无 CI 证据或第三方执行记录。提供代码示例,但未覆盖关键路径,如 teatest 的具体集成。扣分原因:无可验证的测试结果或独立验证,可信度低。
- 该技能本身无危险操作,但用户需留意其推荐的 go test 命令可能执行外部命令,应在受控环境中运行。
- 技能未提供用户确认机制,建议在使用前确认测试范围。
- 依赖 charmbracelet 库可能从海外拉取,若网络受限可能影响使用。
这个 Skill 能做什么,适合哪些场景?
该技能为编写或审查 Go 测试提供了一套结构化的方法,重点关注表驱动测试、行为验证以及 Bubbletea/TUI 应用的状态转换测试。它涵盖单元测试、集成测试和黄金文件测试,并就何时使用每种模式提供了清晰的决策门。该技能强调看似微小的最佳实践,例如使用 t.TempDir() 管理文件系统,以及使用 testing.Short() 标记集成测试以便跳过。它是更大的 Gentle-AI 生态系统的组成部分,可通过该生态系统的安装程序安装。
该技能通过读取 SKILL.md 中定义的规则和模式来指导测试实践。它建议在编写或审查测试时采用的方法,包括使用表驱动测试、通过直接调用 Model.Update() 进行 TUI 状态测试、使用 teatest 进行完整 TUI 交互测试,以及使用黄金文件进行渲染输出测试。它还规定了执行步骤,如先运行针对性测试,仅在需要时通过 -update 标志更新黄金文件,且更新后必须重新运行测试以验证变更。
- 正在为 Go 项目添加测试覆盖率的开发人员,希望遵循公认的模式。
- 正在审查测试代码的工程师,需要核对测试是否覆盖了正确的场景。
- 正在为 Bubbletea 应用编写测试,需要决定何时直接测试模型,何时使用 teatest。
- 为 CLI 工具或 UI 组件维护黄金文件,且需要确保测试输出确定性的测试人员。
- 需要将集成测试标记为在短模式(如 CI 的快速检查)下可跳过的团队。
这个 Skill 有哪些优点和局限?
- 为常见测试场景提供了清晰的决策门。
- 强制了实用的最佳实践,如 t.TempDir() 和 testing.Short() 跳过。
- 通过直接测试 Model.Update(),优雅地处理了 TUI 测试。
- 与黄金文件更新工作流良好集成。
- 作为更大的 Gentle-AI 生态系统的组成部分,受益于集中安装和更新。
- 未提供可直接使用的脚本或模板;它是指导性技能,需要代理执行。
- 未提及对测试框架(如 testify)的具体支持,可能会被过度限制。
- 黄金文件更新的 -update 路径未详细说明,需要用户了解 Go 测试惯例。
- 兼容性仅基于文本;未提及 Windows 特定问题。
如何安装这个 Skill?
该技能是更大的 Gentle-AI 仓库的一部分。安装方法:
- 克隆或下载 Gentle-AI 仓库:
git clone https://github.com/Gentleman-Programming/gentle-ai - 将
internal/assets/skills/go-testing/目录复制到你的 Agent Skills 目录(例如 Claude Code 的~/.claude/skills/或项目.claude/skills/)。 - 或者,运行官方安装脚本(macOS/Linux:
curl -fsSL https://raw.githubusercontent.com/Gentleman-Programming/gentle-ai/main/scripts/install.sh | bash;Windows PowerShell:irm https://raw.githubusercontent.com/Gentleman-Programming/gentle-ai/main/scripts/install.ps1 | iex),然后按照提示选择该技能。
如何使用这个 Skill?
在编写或审查 Go 测试时,直接以自然语言向代理请求该技能,例如“使用 go-testing 技能为这个函数编写测试”或“使用 go-testing 技能审查这些测试”。代理将根据 SKILL.md 中的指导,选择适当的模式、执行测试并报告结果。对于黄金文件,需要时运行 go test -update,检查差异,然后再运行 go test 确认。