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