自动化测试,是在预设条件下运行系统或应用程序,评估运行结果,预先条件包括正常条件和异常条件。Go本身提供了一套轻量级的测试框架,相对低级,但不过还是有效的。它依赖一个go test
测试命令,和一组按照约定方式编写的测试函数,符合规则的测试代码会在运行测试时被自动识别并执行。但是这些文件是不会被普通的Go编译器编译,所以当将应用部署到生产环境时,它们不会被部署。
测试规则
文件命名与放置规则
- 测试源文件名应是
_test
结尾的go文件,例如:add_test.go
; - 测试代码和业务代码是分开的,但两者应该位于同一包下;
- 测试源文件所在的包应该位于
$GOPATH/src
目录下; - 测试文件必须导入
"testing"
包;
在Go中,凡是以
_
或者.
符号作为文件名的首字母时,该文件都会被构建工具忽略掉。以_test.go
结尾的测试文件,将会被编译为单独的包,然后将其链接到主测试二进制文件。
go工具还会忽略名为testdata
的目录,使其可以保存测试所需的辅助数据。
测试函数命名规则
测试文件包括三种函数:测试函数、基准测试函数和例子函数。测试函数用于测试程序的一些逻辑行为是否正确的函数,在命名时应该以Test
为前缀,例如func TestAbcde(t *testing.T)
。基准测试用于衡量一些函数的性能,是以Benchmark
为函数名前缀的函数,例如func BenchmarkAbcde(b *testing.B)
。例子函数用来说明函数(变量,常量等)如何使用,以Example
为函数名前缀的函数,例如:
func ExamplePrintln(){
Println("The output of\nthis example.")
//Output: The output of
//this example.
}
go test命令
go test
命令会自动测试导入路径命名的包并缓存测试结果,根据测试的结果和预先设定的是否匹配,会返回PASS
或FAIL
。它的用