课程进度 85% · 第20/23章第20/23章 · 标签 1/2
— 1 —
单元测试
Go内置testing包,测试文件以_test.go结尾。
go
1
// math_test.go
2
func TestAdd(t *testing.T) {
3
result := Add(2, 3)
4
if result != 5 {
5
t.Errorf("期望5,得到%d", result)
6
}
7
}
8
// 运行: go test -v
基准测试
go
1
func BenchmarkAdd(b *testing.B) {
2
for i := 0; i < b.N; i++ {
3
Add(2, 3)
4
}
5
}
6
// 运行: go test -bench=.
— 2 —
Mock与覆盖率
go
1
// 接口mock
2
type DB interface { GetUser(id int) (User, error) }
3
type mockDB struct{}
4
func (m *mockDB) GetUser(id int) (User, error) {
5
return User{Name: "Mock"}, nil
6
}
7
// 覆盖率
8
// go test -cover
9
// go test -coverprofile=coverage.out
testinggo testbenchmarkmock覆盖率