Go 为什么';t.Fail()是否接受字符串参数?

Go 为什么';t.Fail()是否接受字符串参数?,go,go-testing,Go,Go Testing,我正在努力改进我的Golang测试。我在读这篇文章: 我经常使用t.Fatal(“message”),而我本应该使用以下组合: t.Fail() t.Logf() 那么,为什么在地球上没有一个单一的调用,然后可以失败的测试和日志的原因呢?我有没有办法将这样的方法添加到test.Testing实例中?我只想做: t.FailWithReason("the reason the test failed") 这是否存在?如果不存在,我是否可以添加它?查看测试包的文档和源代码 典型用途: func

我正在努力改进我的Golang测试。我在读这篇文章:

我经常使用
t.Fatal(“message”)
,而我本应该使用以下组合:

t.Fail()
t.Logf()
那么,为什么在地球上没有一个单一的调用,然后可以失败的测试和日志的原因呢?我有没有办法将这样的方法添加到test.Testing实例中?我只想做:

t.FailWithReason("the reason the test failed")

这是否存在?如果不存在,我是否可以添加它?

查看测试包的文档和源代码

典型用途:

func TestAbs(t *testing.T) {
    got := Abs(-1)
    if got != 1 {
        t.Errorf("Abs(-1) = %d; want 1", got)
    }
}
t.Errorf
的文档如下:

// Errorf is equivalent to Logf followed by Fail.
这与您所说的您想要的非常相似:

t.Fail()
t.Logf()

为什么您的
t.Fatal
有问题?它似乎做了你想做的事。如果您不想
FailNow
,也会出现
t.Error
。也许
t.Fatal()
用词不当,我不希望进程退出?是的,
t.Fatal
不退出进程。您的
defer
s甚至仍将运行。如果这符合我的要求,那肯定是用词不当。你为什么认为这是用词不当?