跳转到主内容
新派编程网 - 新潮编程理念,全新技术课堂!

Go 示例测试未执行?只需添加输出注释即可运行

go 中的示例函数(examplexxx)必须包含 `// output:` 注释,否则虽能编译但不会被执行;添加匹配的输出注释后,`go test` 才会识别并运行该示例。 在 Go 中,example_test.go 文件用于编写可执行文档示例(Examples),它们不仅展示用法,还能被 go test 自动验证——但前提是满足特定格式要求。 关键规则如下: 示例函数名必须以 Example 开头(如 Example、ExamplePoke),且位于 _test.go 文件中; 函数必须属于被测包的 对应测试包 (即 package xxx_test),且导入主包时需确保路径正确(注意:gist. git hub.com/... 不是合法的 Go 模块导入路径,本地开发应使用模块化结构); 最易忽略的一点 :函数末尾必须包含 // Output: 注释行,其后紧跟函数实际标准输出(不含前导空格或换行),且输出内容必须与运行结果 严格一致 (包括空格、换行符)。 ✅ 正确写法示例: GitHub Copilot GitHub AI编程工具,实时编程建议 下载
package cow_test import ( "fmt" cow "your-module-path/cow" // 替换为真实模块路径,如 ./ 或 github.com/you/repo/cow ) func Example() { cow.Poke() // Output: MOOOO! }
⚠️ 注意事项: go test -v example_test.go 仅测试单个文件,但要求当前目录是模块根目录(含 go.mod),且包导入路径可解析; 若使用 gist. github .com/... 这类 URL 作为导入路径,Go 无法定位源码——应改用本地相对路径(如 ".")或配置合法 module path; 输出注释中的内容是 预期输出 ,若 cow.Poke() 实际打印 MOOOO!\n(带换行),则注释必须写 // Output: MOOOO!(Go 会自动忽略末尾换行);若函数无输出,可写 // Output:(空输出); 运行全部示例:go test -v -run ^Example; 查看示例文档:go doc -examples。 总结:Go 示例不是普通测试函数,而是“可验证的文档”。添加 // Output: 是启用执行的开关,缺失它,go test 就会静默跳过——这也是你看到 no tests to run 的根本原因。

相关文章