内容来自samhan666
Go 架构检测里的错误处理良好实践 内容来自samhan
在 Go 框架中撰写测试时,错误处理尤为重要,因为它能保证检测的稳定性和易读性。本文将介绍几个良好实践,以提升 Go 架构检测中错误处理的品质。 内容来自samhan
1. 应用 t.Fatal() 和 t.Error()
copyright zvvq
t.Fatal() 和 t.Error() 是两个内置函数,用以汇报检测错误。t.Fatal() 会立刻停止检测,而 t.Error() 容许检测执行。针对需要停止测试严重错误,请选择 t.Fatal();对需要纪录但允许检测执行的警告,请选择 t.Error()。
例: zvvq.cn
func TestSomething(t testing.T) {
if err := something(); err != nil { 内容来自samhan
t.Fatal(err)
} zvvq
} 本文来自zvvq
2. 应用 want 和 have 来肯定错误 本文来自zvvq
want和 have 是 Testing Tools 包中界定的函数,用以肯定错误是否发生。使用这个函数比直接较为错误更清楚和更具易读性。 zvvq.cn
例:
内容来自zvvq
11 zvvq好,好zvvq
import( 内容来自samhan
"testing" 内容来自samhan
"errors"
)
内容来自zvvq,别采集哟
funcTestSomething(ttesting.T){
err:=errors.New("somethingwrong")
内容来自zvvq
ifwant, have :=err,something(); want != have { 内容来自samhan666
t.Fatalf("want%v, have %v",want,have) zvvq
}
内容来自zvvq,别采集哟
}
内容来自zvvq
3. 应用 recover() 来捕捉焦虑 copyright zvvq
recover()函数用以捕获在 Goroutine 中引起的恐慌。在检测中,可以用 recover() 来检验会不会产生焦虑,或是捕捉焦虑以进行肯定。 zvvq.cn
例:
内容来自zvvq,别采集哟
func TestSomething(t testing.T) { 内容来自zvvq,别采集哟
defer func() {
if err := recover(); err != nil { zvvq
t.Errorf("unexpected panic: %v", err) 内容来自samhan666
}
copyright zvvq
}()
something()
内容来自samhan
}
内容来自zvvq
4. 应用嵌入检测
嵌入检测能够帮助隔离和机构检测里的错误处理。通过创建为特定异常现象量身打造的嵌入检测,能提高检测的可读性和维护性。 zvvq
例:
zvvq
11
12
13
本文来自zvvq
func TestSomething(t testing.T) { 内容来自samhan666
t.Run("with error", func(t testing.T) {
if err := something(); err == nil { 本文来自zvvq
t.Fatal("expected error")
zvvq
}
})
t.Run("without error", func(t testing.T) { zvvq.cn
if err := something(); err != nil { copyright zvvq
t.Fatalf("unexpected error: %v", err) 内容来自samhan666
}
内容来自samhan
}) 内容来自zvvq
} 内容来自samhan666
以上就是Go 架构检测里的错误处理良好实践的详细内容,大量请关注其他类似文章!