
Go 中的示例函数(ExampleXXX)需与测试文件共存且文件内至少包含一个以 Test 开头的测试函数,否则 go test 会因无测试入口而忽略示例,报出 “no tests to run” 警告。
go 中的示例函数(examplexxx)需与测试文件共存且文件内至少包含一个以 test 开头的测试函数,否则 `go test` 会因无测试入口而忽略示例,报出 “no tests to run” 警告。
在 Go 中,Example 函数用于文档化用法并支持可执行示例验证,但它不是独立的测试入口。go test 工具默认只识别以 Test 为前缀的函数作为测试执行单元;即使文件中定义了合法的 ExampleMethod1 并包含 // Output: ... 注释,若该 _test.go 文件中完全不包含任何 TestXxx 函数,go test 将直接跳过整个文件,并输出警告:
testing: warning: no tests to run
✅ 正确做法是:确保你的测试文件(如 xxx_test.go)中至少存在一个符合命名规范的测试函数,例如:
func TestDummy(t *testing.T) {
// 可为空,仅作测试入口占位
}
或更推荐的方式——结合实际逻辑编写有意义的测试:
func TestMethod1(t *testing.T) {
result := Method1()
if result != expectedValue {
t.Errorf("Method1() = %v, want %v", result, expectedValue)
}
}
func ExampleMethod1() {
fmt.Printf("result: %x", Method1())
// Output: xxxx
}
然后使用以下任一命令运行示例(注意:-test.run 参数需匹配示例名,且 -test.v 启用详细输出):
go test -v -run=^$ -example=^ExampleMethod1$ # 仅运行示例(推荐) # 或 go test -v # 运行全部测试 + 示例(前提是存在 TestXxx 函数)
⚠️ 注意事项:
-
go test xxx_test.go(显式指定文件)仍要求该文件内有TestXxx函数,否则无法触发Example执行; - 示例函数名必须以
Example开头,且后接导出标识符(如ExampleMethod1中Method1首字母大写); -
// Output:注释必须紧接在函数末尾(空行前),且内容需与实际输出完全一致(含空格、换行); - 若只想验证示例而不运行其他测试,建议使用
-run=^$排除所有Test函数,再用-example=显式指定。
总结:Go 的示例函数依赖测试框架的启动机制,没有 TestXxx,就没有执行上下文。添加一个最简 TestXxx 是启用 Example 的必要前提——它不是冗余代码,而是 Go 测试生态的设计约定。










