我想包装标准的 golang 测试函数,例如 testing 包中的 t.Errorf
。
我试过这个:
// AssertEqual tests that the expected and actual values match
func AssertEqual(t *testing.T, expected interface{}, actual interface{}) {
switch expected.(type) {
case string:
if expected != actual {
t.Errorf("Error:\nexpected: %s\nactual: %s", expected, actual)
}
default:
t.Errorf("Unsupported type")
}
}
但是,当测试失败时,我会得到辅助函数的函数和行号:
test_asserts.go:12: Error:
expected:
actual: TestValue
有没有办法在调用者的行号处出错?
最佳答案
这是测试库的工作方式:
https://golang.org/src/testing/testing.go?h=Errorf#L285
通过使用 runtime.Caller
。
您可以为自己的错误函数借用这段代码,以便更深入地了解堆栈。您可以替换整个 Errorf
(即 log
+ fail
),或者在调用 debug.PrintStack()
之前使用 Errorf
之类的东西打印整个堆栈,但代码更少。
关于go - 如何包装 golang 测试函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39194816/