go test功能测试和性能测试------顺表说说为什么建议go包名和路径名尽量一致?

版权声明:本文为博主原创文章,转载时请务必注明本文地址, 禁止用于任何商业用途, 否则会用法律维权。 https://blog.csdn.net/stpeace/article/details/82916275

        祝国庆快乐!

       之前说过, 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没啥作用,想想为什么):

扫描二维码关注公众号,回复: 3686634 查看本文章
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, 不多说。

猜你喜欢

转载自blog.csdn.net/stpeace/article/details/82916275
go
今日推荐