go的代码测试

  package main

import (
    "testing"
)

func Test(t *testing.T) {
    test := []struct {
        s      string
        answer int
    }{
        {"abc", 3},
        {"abcabcadcd", 4},
        {"吃葡萄不吐葡萄皮", 0},
    }
    for _, tt := range test {
        receive := lengthSubstr(tt.s)
        if receive != tt.answer {
            t.Errorf("got %d for input %s;"+"expected %d",
                receive, tt.s, tt.answer)
        }

    }
}

代码覆盖率测试##

go test -cover

代码压力测试##

go test -bench.
func Tests(b *testing.B) {
    s := "吃葡萄不吐葡萄皮"
    answer := 5
    for i := 0; i < b.N; i++ {
        receive := lengthSubstr(s)
        if receive != answer {
            b.Errorf("got %d for input %s;"+"expected %d",
                receive, s, answer)
        }

    }

}

谈谈怎么优化性能

通过下面的命令生成一个cpu.out的文件(二进制)

go test -bench. -cpuprofile cpu.out

next

go tool pprof cpu.out

运行后会有一个命令行 可以通过help来查看具体有哪些命令

输入web会生成详细的图,但是这里说我没有Graphviz 安装一个就好

aaaa.png

记得将生成的bin放到Path里面

你可能感兴趣的:(go的代码测试)