testing.T.FailNow
和位于测试文件 goroutine 中的类似方法的调用。
像 FailNow
这种方法会调用 runtime.Goexit
,并停止调用 goroutine,而不是测试。
因此,必须仅从运行测试或基准的 goroutine 中调用。
有关 FailNow
的更多信息,请参见 golang.org 的 func (*T) FailNow。
示例:
func TestFoo(t *testing.T) {
go func() {
t.Fatal("oops") // 退出 goroutine,而不是 TestFoo
}()
}
在应用替换为 'Error' 和 'return' 快速修复后:
func TestFoo(t *testing.T) {
go func() {
t.Error("oops")
return
}()
}