我目前正在考虑如何编写测试,以检查给定的代码是否发生了恐慌?我知道Go曾经recover
用来捕获恐慌,但是与说Java代码不同,您不能真正指定在发生恐慌时应该跳过哪些代码或您有什么问题。因此,如果我有一个功能:
func f(t *testing.T) {
defer func() {
if r := recover(); r != nil {
fmt.Println("Recovered in f", r)
}
}()
OtherFunctionThatPanics()
t.Errorf("The code did not panic")
}
我真的不能说是OtherFunctionThatPanics
惊慌失措而我们恢复了,还是该函数根本没有惊慌。如果没有恐慌,我该如何指定跳过哪些代码,如果有恐慌,我应如何执行?如何检查我们是否从中恢复了恐慌?