t.Log用于测试中输出不影响结果的日志,需加-v参数才可见,适合记录中间状态等;t.Errorf则标记测试失败但继续执行;t.Logf提供更灵活的格式化输出。
在 Go
的测试中,t.Log 是调试和理解测试执行过程的重要工具。它不会影响测试结果(无论成功或失败),但会在测试运行时输出日志信息,尤其在使用 go test -v 时可见。
适合记录测试中的中间状态、输入输出、关键分支判断等辅助信息,比如:
if err != nil 被触发时)t.Log 只是输出信息,不标记测试失败;而 t.Errorf 会记录错误并让测试以失败状态结束(但继续执行后续语句)。两者可共存:
示例:
func TestDivide(t *testing.T) {
result, err := divide(10, 0)
t.Log("尝试除零:", 10, "/", 0) // 总会打印
if err != nil {
t.Log("捕获到预期错误:", err) // 辅助说明
t.Errorf("期望无错,但得到:%v", err) // 导致测试失败
}
}
默认情况下,go test 不显示 t.Log 输出。要看到它们,需显式启用详细模式:
go test -v:显示所有测试函数名 + 其 t.Log 内容go test -v -run=^TestDivide$:只运行并显示指定测试的日志go test -v -failfast:遇到第一个失败就停,但仍显示已执行测试的日志当需要拼接字符串或格式化数值时,t.Logf 比 t.Log 更简洁:
t.Log("count:", i, "value:", v)t.Logf("count: %d, value: %s", i, v) —— 更易读、支持类型格式化注意:t.Logf 同样需要 -v 才可见,且不改变测试结果。