Go测试代码需要知道知识点

53 阅读1分钟

关于go test

1.所有_test.go为后缀名的源文件在执行go build时不会被构建成包的一部分,它们只是go test测试的一部分。

2.在*_test.go文件中,有4种类型的函数:测试函数、基准测试(benchmark)函数、模糊测试函数、示例函数。

3.Windows下-run regexp -bench regexp 的正则表达式都需要用引号或者单引号括起来,不然不识别

4.可以通过t.Log t.Logf,t.Error,t.Errorf,Fatal,Fatalf,(包括b.....)实现测试过程中的日志显示需要

5.可以通过t.FailNow()立即已失败结束当前的测试,Fail()方法则还会继续执行后续的东西

TestMethod:测试函数

func TestA(t *testing.T) {  
    t.Log("A")  
}

BechmarkMethod:基准测试函数,如果不用go test -bench="正则表达式"指定,不会自动执行

package code  
import "testing"  
func Benchmark_Add(b *testing.B) {  
    var n int  
    for i := 0; i < b.N; i++ {  
        n++  
    }  
}

func Benchmark_Add_TimerControl(b *testing.B) {  
    // 重置计时器  
    b.ResetTimer()  
    // 停止计时器  
    b.StopTimer()  
    // 开始计时器  
    b.StartTimer()  
    var n int  
    for i := 0; i < b.N; i++ {  
        n++  
    }  
}

go test -v //表示需要显示细节

-run="." xx_test.go //测试xx_test.go里面的所有Test方法,但不包括的benchmark
-bench="." xx_test.go //测试xx_test.go里面的所有Benchmark方法,有-v Test方法也会有.