2 回答
TA贡献1875条经验 获得超3个赞
无法自动处理它,但是您可以简单地制作一个包装器并在每个测试中调用它。
这样您就不必使用全局变量来跟踪测试。
例子:
func logPanic(t *testing.T, f func()) {
defer func() {
if err := recover(); err != nil {
t.Errorf("paniced: %v", err)
}
}()
f()
}
func Test1(t *testing.T) {
logPanic(t, func() {
GetByNameReturnNull("invalid")
})
//or if the function doesn't take arguments
//logPanic(t, GetByNameReturnNull)
}
func Test2(t *testing.T) {
logPanic(t, func() {
GetByNameReturnNull("valid")
})
}
TA贡献1773条经验 获得超3个赞
如果您希望您的测试恐慌,您不应该看到“1 次失败”。
您应该会看到两个测试都成功。
相反,您应该专门测试恐慌情况,例如“了解延迟、恐慌和恢复”中所述:
func TestPanic(t *testing.T) error {
defer func() {
fmt.Println("Start Panic Defer")
if r := recover(); r != nil {
fmt.Println("Defer Panic:", r)
} else {
t.Error("Should have panicked!")
}
}()
fmt.Println("Start Test")
panic("Mimic Panic")
}
如果您调用一个以panic.
- 2 回答
- 0 关注
- 227 浏览
添加回答
举报