go 单元测试
概述
go 提供了自动测试的包 testing
,
假设我们有一个文件youfile.go
,那么建立测试文件的名字为 yourfile_test.go
,这个文件中有测试函数,形式如下:
func TestXxx(*testing.T)
其中 TestXxx
中 Xxx
的第一个字母 X
必须是大写字母。
将你的源文件 yourfile.go
和 yourfile_test.go
放在同一个目录下。
使用 go test
命令运行
实例
这里使用 https://github.com/golang/example/tree/master/stringutil 的文件测试
stringutil 目录下有两个文件:reverse.go
和 reverse_test.go
reverse.go
package stringutil
// Reverse returns its argument string reversed rune-wise left to right.
func Reverse(s string) string {
r := []rune(s)
for i,j := 0,len(r)-1; i < len(r)/2; i,j = i+1,j-1 {
r[i],r[j] = r[j],r[i]
}
return string(r)
}
reverse_test.go
package stringutil
import "testing"
func TestReverse(t *testing.T) {
for _,c := range []struct {
in,want string
} {
{"Hello,world","dlrow,olleH"},{"Hello,世界","界世,{"",""},} {
got := Reverse(c.in)
if got != c.want {
t.Errorf("Reverse(%q) == %q,want %q",c.in,got,c.want)
}
}
}
运行结果
[stringnutil]# go test
PASS
ok stringutil 0.002s