codegeex 为 go 生成单元测试的五种方法:一、侧边栏输入 /tests for the go function above;二、右键选中函数选择 generate unit test;三、添加 godoc 注释后触发生成;四、用 cli 模式传入标准 prompt;五、手动编写测试框架后由模型续写用例。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

如果您在使用 CodeGeeX 为 Go 语言函数生成单元测试时未得到预期的 test 文件或测试逻辑不完整,则可能是由于提示方式、上下文缺失或插件配置未适配 Go 生态所致。以下是针对 Go 单元测试生成的多种可行方法:
一、通过侧边栏智能问答指令触发生成
该方法利用 CodeGeeX 的自然语言理解能力,直接在 IDE 侧边栏输入标准化指令,由模型解析函数签名与语义后生成符合 Go testing 包规范的测试代码。
1、在 VSCode 或 JetBrains IDE 中打开一个 .go 文件,确保目标函数(如 func Add(a, b int) int)已定义且可被光标选中。
2、点击右侧 CodeGeeX 面板,在输入框中键入:/tests for the Go function above。
3、按下回车或点击发送,等待模型响应;生成结果将包含 func TestAdd(t *testing.T) 及典型用例(正常输入、边界值、负数等)。
4、检查生成内容是否含 import "testing" 和符合 go test 命名约定的函数名(Test+首字母大写的被测函数名)。
二、右键菜单快捷生成单测
此方式依赖插件对当前选中代码块的语法树分析能力,适用于已正确高亮 Go 函数定义的场景,无需手动输入提示词。
1、用鼠标或键盘精准选中整个 Go 函数定义(包括 func 关键字、参数列表、返回类型及函数体)。
2、右键单击选中区域,在弹出菜单中依次选择:CodeGeeX → Generate Unit Test。
3、若插件识别成功,将在编辑器新标签页中打开生成的 *_test.go 文件,其中包含 TestAdd 函数及多个 t.Run 子测试。
4、确认测试文件路径与源文件在同一包下,且文件名以 _test.go 结尾。
三、在函数上方添加 GoDoc 注释引导生成
CodeGeeX 对 Go 语言的支持深度依赖其对 godoc 风格注释的理解,显式声明输入输出、异常行为可显著提升测试覆盖度和断言准确性。
1、在目标函数上方插入多行注释,格式严格遵循 GoDoc 规范,例如:// Add returns the sum of two integers. Panics if overflow occurs.
CodeGeeX 2.21.0是智谱AI推出的AI编程助手版本,对Inline Chat功能进行了重大优化,包括UI设计升级、支持流式输出以提升响应速度,并新增“查看思路”按钮以便理解代码原理。同时,该版本在编辑器中新增CodeLens控件,支持一键“解释”代码或“添加注释”。目前该工具对个人开发者免费开放。
2、在注释下方空一行,写入函数签名:func Add(a, b int) int { ... }。
3、选中注释+函数整体,再次使用侧边栏 /tests 指令或右键菜单触发生成。
4、生成的测试将包含对 panic 场景的 recover 测试逻辑,并使用 t.Error or t.Fatal 进行异常路径验证。
四、使用 CodeGeeX2 CLI 模式手动构造 prompt
当 IDE 插件无法稳定识别 Go 项目结构时,可绕过图形界面,通过本地运行 CodeGeeX2 模型并传入精确 prompt 实现可控生成。
1、确保已安装 codegeex2-6b 模型及依赖:pip install transformers torch。
2、构造标准 prompt 字符串,开头必须声明语言与任务类型:# language: Go\n# generate unit tests for the following function:\n\nfunc Multiply(x, y int) int {\n\treturn x * y\n}
3、调用 tokenizer.decode() 获取输出,检查返回内容是否含 func TestMultiply(t *testing.T) 及 table-driven 测试结构([]struct{...})。
4、将生成结果保存为 multiply_test.go,并执行 go test -v 验证可运行性。
五、手动补全测试模板后交由 CodeGeeX 续写
对于复杂逻辑(如涉及 interface、channel、time.Sleep 等),可先提供最小可运行测试框架,再让模型填充具体断言与场景。
1、新建同名 *_test.go 文件,在其中编写基础结构:func TestProcessData(t *testing.T) { type args struct { input string } tests := []struct { name string args args want string }{}
2、将光标置于 tests := [...]{} 大括号内,输入提示:add 3 test cases covering empty string, valid JSON, and malformed input。
3、按 Ctrl+Enter 触发交互模式,从候选列表中选择含 {"empty", args{""}, ""} 等结构的选项。
4、确认每个子测试内含 t.Run(name, func(t *testing.T) { ... }) 封装及对应 assert.Equal 或 require.NoError 调用。










