package test
import (
"os"
"strconv"
"testing"
)
func TestMain(m *testing.M) {
// before test
retCode := m.Run()
// after test
os.Exit(retCode)
}
// 单元测试
func TestAdd(t *testing.T) {
data := [...][3]int{
{1, 2, 3},
{2, 2, 3},
}
// 测试组
// for _, a := range data {
// if a[2] != Add(a[0], a[1]) {
// t.Error("test failed")
// }
// }
// 子测试
for i, a := range data {
t.Run(strconv.Itoa(i), func(t *testing.T) {
res := Add(a[0], a[1])
if res != a[2] {
t.Error("test failed")
}
})
}
}
// go test -v
// go test -cover
// go test -cover -coverprofile=c.out # 将覆盖率相关的记录信息输出到一个文件
// go tool cover -html=c.out
// 性能测试
func BenchmarkAdd(b *testing.B) {
for i := 0; i < b.N; i++ {
_ = Add(1, 2)
}
}
// go test -bench=Add
// go test -bench=Split -benchmem 获取内存参数