简单使用Golang的Test

golang的test使用起来也是比较方便简单的

要求:
①第一部当然是要导包了,少不了"testing"包
②test用例的函数名必须要以"TestXxx"的形式命名,否则golang会识别不出来直接跳过不测试
③test的传入参数必须为"t *testing.T"(测试功能测试函数)或"b *testing.B"(Benchmark——测试性能测试函数)
④t.Errorf为打印错误信息,并且当前的test case会被跳过
⑤t.SkipNow()为跳过当前的test,并把这个test按照pass处理然后去执行下一个test,不过这个t.SkipNow()要求必须写在函数体内的第一句

命令:一般常用"go test"或"go test -v"执行,后者会打印详细信息
例如:

//main.go
package main
func Abc() int {
	sum := 0
	for i := 1; i <= 100; i++ {
		sum += i
	}
	return sum
}
//main_test.go
package main
import (
	"fmt"
	"testing"
)
func TestAbc(t *testing.T) {
	res := Abc()
	if res != 5050 {
		t.Errorf("wrong result")
	}
	fmt.Println("ok")
}

当命令行键入"go test"
在这里插入图片描述

当命令行键入"go test -v",打印了更加详细的信息
在这里插入图片描述

上面的例子是以参数"t *testing.T"举例的,一般用来写功能测试函数,下面讲讲性能测试函数Benchmark。
①benchmark函数一般以Benchmark开头,而且参数要改成"b *testing.B"
②benchmark的test case一般会跑b.N次,而且每次执行都会跑这么多次,这个b.N并不是一个固定的次数,而是根据程序的复杂程度而调整
③要注意的是,benchmark在执行过程中会根据实际test case的执行时间是否稳定会增加b.N的次数以达到稳态

//main_test.go
package main
import (
	//"fmt"
	"testing"
)
func BenchmarkAll(b *testing.B) {
	for i := 0; i < b.N; i++ {
		TestAbc()
	}
}

命令行键入"go test -bench=."
在这里插入图片描述
可以看到这个benchmark的执行,执行次数为5000000,平均每次执行时间为292ns

发布了22 篇原创文章 · 获赞 6 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_42403866/article/details/85307653