单元测试
Go本身提供了一套轻量级的测试框架。符合规则的测试代码会在运行测试时被自动识别并
执行。单元测试源文件的命名规则如下:在需要测试的包下面创建以“_test”结尾的go文件,形
如[^.]_test.go。
Go的单元测试函数分为两类:功能测试函数和性能测试函数,分别为以Test和Benchmark
为函数名前缀并以testing.T为单一参数的函数
func TestAdd1(t *testing.T)
func BenchmarkAdd1(t *testing.T)
func TestAdd1(t *testing.T) {
r := Add(1, 2)
if r != 2 { // 这里本该是3,故意改成2测试错误场景
t.Errorf("Add(1, 2) failed. Got %d, expected 3.", r)
}
}
//执行功能单元测试非常简单,直接执行go test命令即可。下面的代码用于对整个
func BenchmarkAdd1(b *testing.B) {
b.StopTimer() // 暂停计时器
DoPreparation() // 一个耗时较长的准备工作,比如读文件
b.StartTimer() // 开启计时器,之前的准备时间未计入总花费时间内
for i := 0; i < b.N; i++ {
Add(1, 2)
}
}
性能单元测试的执行与功能测试一样简单,只不过调用时需要增加-test.bench参数而已,
具体代码如下所示:
go test–test.bench add.go