package
0.0.0-20210804034521-0ebcbb6b220d
Repository: https://github.com/aystzh/go-modules.git
Documentation: pkg.go.dev

# README

test命名规则

Test+待测试方法名
测试用的参数有且只有一个,在这里是 t *testing.T
基准测试(benchmark)的参数是 *testing.B,TestMain 的参数是 *testing.M 类型

test常用命令

该 package 下所有的测试用例都会被执行:
go test 
go test -v,-v 参数会显示每个用例的测试结果,另外 -cover 参数可以查看覆盖率
192:test zhanghuan$ go test -v
=== RUN   TestAdd
--- PASS: TestAdd (0.00s)
PASS
ok      github.com/aystzh/go-modules/test       0.141s


192:test zhanghuan$ go test -cover
PASS
coverage: 50.0% of statements
ok      github.com/aystzh/go-modules/test       0.291s
go test -run TestAdd -v 指定运行其中一个用例,支持通配符 *,和部分正则表达式,例如 ^、$。
192:test zhanghuan$ go test -run TestAdd -v
=== RUN   TestAdd
--- PASS: TestAdd (0.00s)
PASS
ok      github.com/aystzh/go-modules/test       0.486s
子测试
192:test zhanghuan$ go test -run TestMul/neg -v
=== RUN   TestMul
=== RUN   TestMul/neg
--- PASS: TestMul (0.00s)
    --- PASS: TestMul/neg (0.00s)
PASS
ok      github.com/aystzh/go-modules/test       0.468s
基准测试
函数名必须以 Benchmark 开头,后面一般跟待测试的函数名
参数为 b *testing.B
执行基准测试时,需要添加 -bench 参数。
192:benchmark zhanghuan$ go test -benchmem -bench .
goos: darwin
goarch: amd64
pkg: github.com/aystzh/go-modules/test/benchmark
BenchmarkHello-12               25150080                48.2 ns/op             5 B/op          1 allocs/op
BenchmarkParallel-12             5237719               245 ns/op             272 B/op          8 allocs/op
PASS
ok      github.com/aystzh/go-modules/test/benchmark     4.382s
基准测试各个函数意义:
type BenchmarkResult struct {
    N         int           // 迭代次数
    T         time.Duration // 基准测试花费的时间
    Bytes     int64         // 一次迭代处理的字节数
    MemAllocs uint64        // 总的分配内存的次数
    MemBytes  uint64        // 总的分配内存的字节数
}
mockgen辅助生成测试代码
使用 mockgen 生成 db_mock.go。一般传递三个参数。包含需要被mock的接口得到源文件source,生成的目标文件destination,包名package
install:
go get -u github.com/golang/mock/gomock
go get -u github.com/golang/mock/mockgen
generate:
192:gomock zhanghuan$ mockgen -source=db.go -destination=db_mock.go -package=main

# Packages

No description provided by the author
Package main is a generated GoMock package.
No description provided by the author
No description provided by the author

# Functions

No description provided by the author
No description provided by the author