我们可以为 Go 程序编写三类测试, 即: 功能测试 (test), 基准测试 (benchmark), 也称性能测试 (example)
测试文件的约定
测试文件的主名称应该以被测试文件主名称为先导, 并且以_test 为后缀. 例: demo.go 的测试文件名称应为 demo_test.go.
一般情况下一个测试文件只给一个源码文件做测试, demo_test.go 只测试 demo.go 文件.
测试文件与被测试文件应该放在同一个代码包内
函数的名称和签名的规定
对于功能测试函数来说, 其名称必须以 Test 为前缀, 并且参数列表中只应有一个 * testing.T 类型的参数声明.
对于性能测试函数来说, 其名称必须以 Benchmark 为前缀, 并且唯一参数的类型必须是 * testing.B 类型的.
对于示例测试函数来说, 其名称必须以 Example 为前缀, 对函数的参数列表没有强制规定.
- package demo
- import (
- "fmt"
- "testing"
- )
- // 功能测试
- func TestMethod(t *testing.T) {
- fmt.Println("function test")
- }
- // 基准测试
- func BenchmarkMethod(b *testing.B) {
- fmt.Println("benchmark test")
- }
- // 性能测试
- func Examplemethod(t *testing.T) {
- fmt.Println("example test")
- }
- func Method(t *testing.T) {
- fmt.Println("Method")
- }
go test 命令
go test 命令, 会自动读取源码目录下面名为 *_test.go 的文件, 生成并运行测试用的可执行文件.
运行 go test 命令会运行符合规定的测试代码;
go test 命令就会针对每个被测代码包, 依次地进行构建, 执行包中符合要求的测试函数, 清理临时文件, 打印测试结果.
命令:
go test demo #go test [目录]
这里是否读缓存不会影响我们的测试结果, 如果想清初缓存可以执行: go clean -cache
性能测试
- # 格式: go test -bench=. -run=^$ [目录]
- go test -bench=. -run=^$ demo
-bench= 指要进行性能测试
. 需要执行任意名称的性能测试函数 (符合规则)
-run=^$ 需要执行哪些功能的测试函数
^$ 只执行名称为空的功能测试函数 (不执行任何功能函数)
输出的内容:
- function test
- benchmark test
- goos: Windows
- goarch: amd64
- pkg: demo
- BenchmarkMethod-8 benchmark test
- benchmark test
- benchmark test
- benchmark test
- benchmark test
- 2000000000 0.00 ns/op
- PASS
- ok demo 0.262s
**** 码字不易如果对你有帮助请给个关注 ****
**** 爱技术爱生活 QQ 群: 894109590****
来源: https://www.cnblogs.com/freeoldman/p/11388335.html