祝国庆快乐!
之前说过, go包名和路径名不一致必须完全一致, 的确如此。 但是, 建议一致。功能测试go test mymath查找路径就是根据包名来查找的。
先来看看功能测试,add.go内容为:
package mymath
func Add(x, y int) int {
return x + y
}
add_test.go内容为:
package mymath
import "testing"
func TestX(t *testing.T){
i := Add(4, 6)
if i != 10 {
t.Error("failed")
}
}
结果:
xxx$ go test mymath
ok mymath (cached)
xxx$
再来看看性能测试:
add.go中增加sleep操作:
package mymath
import "time"
func Add(x, y int) int {
time.Sleep(time.Second)
return x + y
}
再看add_test.go的内容:
package mymath
import "testing"
func BenchMarkY(b *testing.B){
for i := 0; i < b.N; i++ {
Add(1, 2)
}
}
来测一下(在本例中, 执行如下命令时,GOPATH没啥作用,想想为什么):
xxx$ go test -test.bench add.go
PASS
ok xxxxxx/learngo/src/mymath 1.006s
xxx$
符合预期。
注意:
1. 测试文件命名必须用xxx_test.go的形式
2. 功能测试函数必须用TestX的形式, X要大写
3. 性能测试函数必须是BenchMarkY的形式, Y要大写
OK, 不多说。