Go的单元测试

函数测试

以下形式的函数签名将被go test命令当做单元测试方法

func TestXxx(*testing.T)

按照Go语言的习惯,把一个go文件的测试代码放在相同的的package下,起名称为 xxx_test.go,```go test```命令会自动识别,在正式编译的时候会忽略掉这样的文件。

运行```go help test```会了解更多。

函数性能测评(benchmark)

用以下形式命名的函数被当成benchmark(性能评测)

func BenchmarkXxx(*testing.B)

类似于这样的代码就可以评测每次循环花费的时间

func BenchmarkHello(b *testing.B) {

    for i := 0; i < b.N; i++ {

        fmt.Sprintf("hello")

    }

}

一个特殊的测试函数是TestMain,如果它存在则所有的测试函数的执行都是通过调用它来实现,函数签名形式如下:

func TestMain(m *testing.M)

TestMain典型的代码是:

func TestMain(m *testing.M) {

     // setup

     // call flag.Parse() here if TestMain uses flags

     os.Exit(m.Run())

     // teardown

}


testing.T 与 testing.B 的常用函数说明

testing.T/B.Fail  ->  mark the function as having failed

testing.T/B.FailNow  ->  mark the function as having failed and stop execution

testing.T/B.Error  ->  Log + Fail

testing.T/B.Fatal  ->  Log + FailNow

你可能感兴趣的:(Go的单元测试)