go test -v 可显示测试执行详情,如用例运行状态与耗时,但无 -vv 参数;通过 -v 结合 -cover、-race 等参数可增强输出,t.Log 配合 -v 还能输出调试日志,满足多数调试需求。

在 Go 语言中,使用 go test -v 可以查看测试的详细输出,但并不存在 -vv 这样的双 verbose 参数。Go 的测试工具只支持单个 -v(verbose)标志来显示测试函数的运行情况。
理解 go test -v 的作用
-v 参数会让测试框架打印出每个测试用例的执行状态,包括哪些测试开始运行、是否通过等信息。这对于调试和观察测试流程非常有帮助。
示例代码:假设你有一个简单的测试文件 example_test.go:
package mainimport "testing"
立即学习“go语言免费学习笔记(深入)”;
func TestAdd(t *testing.T) { if add(2, 3) != 5 { t.Error("Expected 2+3=5") } }
func TestSubtract(t *testing.T) { if subtract(5, 3) != 2 { t.Error("Expected 5-3=2") } }
运行命令:
go test -v
输出结果类似:
=== RUN TestAdd --- PASS: TestAdd (0.00s) === RUN TestSubtract --- PASS: TestSubtract (0.00s) PASS ok your-package-name 0.001s
如何获取更详细的测试信息
虽然没有 -vv,但你可以结合其他参数获得更多信息:
- go test -v -cover:显示测试覆盖率
- go test -v -race:启用竞态检测,排查并发问题
- go test -v -failfast:遇到第一个失败时停止后续测试
- go test -v -run TestName:只运行特定测试函数
自定义日志输出增强调试能力
在测试中使用 t.Log 或 t.Logf 输出中间值或状态,这些内容只有在开启 -v 时才会显示。
修改测试函数示例:
func TestAdd(t *testing.T) {
result := add(2, 3)
t.Logf("add(2,3) = %d", result)
if result != 5 {
t.Error("Expected 2+3=5")
}
}加上 -v 后会看到日志输出,有助于分析执行过程。
基本上就这些。Go 的测试系统设计简洁,-v 已经提供了足够的详细信息,配合合理的日志和外部工具就能满足大多数调试需求。不复杂但容易忽略细节。










