SuperAPI AI 工具集

go-testing

测试与质量

查看项目

更新于 10-15 21:41

技能介绍

用途:该技能用于在 Go 项目中编写测试,尤其针对 Gentleman.Dots 的 Bubbletea TUI 组件。触发场景包括编写 Go 单元测试、测试 Bubbletea TUI 组件、创建表驱动测试、添加集成测试、使用 golden 文件测试。

主要能力:提供四类关键模式。一是表驱动测试,用结构体切片组织多组用例并通过 t.Run 子测试运行,同时校验返回值与错误。二是 Bubbletea Model 测试,直接调用 m.Update(tea.KeyMsg{...}) 并断言状态迁移,如屏幕切换与光标位置。三是 teatest 集成测试,使用 teatest.NewTestModel 发送按键、用 WaitFinished 等待、用 FinalModel 获取最终模型并断言。四是 golden 文件测试,将 m.View() 输出与 testdata 下的 .golden 文件比较,支持 -update 标志更新基准。

使用方式:测试文件与被测文件同目录,命名 *_test.go,golden 文件放在 testdata/ 下。常用命令:go test ./... 运行全部测试;go test -v ./internal/tui/... 查看 TUI 测试详情;go test -run TestNavigation 运行指定测试;go test -cover ./... 统计覆盖率;go test -update ./... 更新 golden 文件;go test -short ./... 跳过集成测试。

适用场景:纯函数用表驱动测试;有副作用时 mock 依赖;返回错误时同时测试成功与失败分支;复杂逻辑拆分为更小可测单元。TUI 状态变化直接测 Update,完整流程用 teatest,视觉输出用 golden 文件,按键处理发送 tea.KeyMsg。系统或 exec 相关可用接口加 mock,真实命令用集成测试并以 -short 跳过,文件操作用 t.TempDir()。

限制:资料未提供该技能的安装方式、收费、价格与平台支持信息;示例代码针对 Gentleman.Dots 项目结构,其他项目需自行调整。teatest 文档见 https://github.com/charmbracelet/bubbletea/tree/master/teatest。