go语言的testing使用详解

                            go语言的testing使用详解

 一、注意细节 

  • 每一个包名使用 xxx_test.go命名
  • 每一个测试用例使用 TestXxx命名
  • 测试用例传参要用 t *testing.T 或者 t *testing.B
  • t.Errorf 是打印错误信息,并且当前测试用例会被跳过
  • t.SkipNow 跳过当前test,并且直接按pass处理下一个
  •  go test不会保证顺序执行,但是通常按照顺讯执行
  • 使用t.Run来执行subtests可以做到控制test输出以及test的顺序 (使用t.Run()顺序执行)
  • TestMain作为初始化test,并且使用m.Run来调用其他tests可以完成需要初始化的testing,比如连接数据库、文件打开rest服务等
  • 如果没有TestMain函数,执行TestXxxx形式的任何函数,如果有只执行TestMain函数
  • Benchmark用来性能测试的

二、测试用例

  • 文件名 main.go
package main
 //被测方法
func sayhello() string{	
	return "hello world"
}
  • 测试用例 main_test.go
package main
import (
	"testing"//引入包
	"fmt"
)
func testHelloWorld(t *testing.T) {
	t.SkipNow()//跳过不执行此函数
	res:=sayhello()//测试被测函数
	fmt.Println("TestHelloWorld")
	if res != "hello world"{
		t.Errorf("错误")
	}
}

func testHello(t *testing.T) {
	res:=sayhello()
	fmt.Println("TestHello")
	if res != "hello world"{
		t.Errorf("错误")
	}
}

func TestAll(t *testing.T){
    //按照顺序执行
	t.Run("TestHello",testHello)
	t.Run("TestHelloWorld",testHelloWorld)
}
//性能测试用例
func BenchmarkAll(b *testing.B){
	for n := 0; n < b.N; n++ {
		sayhello()
	}
}
//初始话函数
func TestMain(m *testing.M){
	fmt.Println("开始")
	m.Run()
}

发布了114 篇原创文章 · 获赞 10 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/m0_38004619/article/details/99285457
今日推荐