go test使用

go test 功能,提高了开发和测试的效率。

下面例子的文件结构如下:

goTest使用/add.go goTest使用/test_add.go

add.go

package goTest使用

import "fmt"

func Add(a, b int) int {
	return a+b
}
func What() {
fmt.Println("what ?")
}

add_test.go

package goTest使用

import (
	"testing"
	"fmt"
)

func TestAdd(t *testing.T) {
	r := Add(1,2)
	fmt.Println(r)

}
func TestWhat(t *testing.T) {
	What()
}

进入两个文件所在的目录下,如

zhangqiangdeMac-mini:Test zhqmac$ cd goTest使用/

执行 go test命令

zhangqiangdeMac-mini:goTest使用 zhqmac$ go test

控制台输出:

3  //Add()结果
what ? //What()结果
PASS
ok      zhqGo/Test/goTest使用   0.007s

测试某个函数

go test 命令,默认运行所有在目录下xxx_test.go 的测试文件 而且只对以Testxxx(t tesing.T)的函数进行测试,要单测某个函数,如Add()可以使用命令

go test -test.run Add

go test -test.run TestAdd

测试单个文件

go test -v add_test.go add.go

测试前初始化

进行测试之前需要初始化操作(例如打开连接),测试结束后,需要做清理工作(例如关闭连接)等等。这个时候就可以使用TestMain()。

package goTest使用

import (
	"testing"
	"fmt"
)

func TestAdd(t *testing.T) {
	r := Add(1,2)
	fmt.Println(r)

}
func TestWhat(t *testing.T) {
	What()
}
func TestMain(m *testing.M)  {
//初始化操作
	fmt.Println("begin")
	m.Run()
	fmt.Println("end")
}

参数说明

1、运行参数

  • go test 忽略log信息
  • go test -v 冗长模式, 打印实时的log信息

2、测试过程控制

  • t.Log t.Logf // 正常信息
  • t.Error t.Errorf // 测试失败信息
  • t.Fatal t.Fatalf // 致命错误, 测试程序退出的信息
  • t.Fail //当前测试标记为失败
  • t.Failed //查看失败标记
  • t.FailNow// 标记失败, 并终止当前测试函数的执行(需要注意的是,我们只能在运行测试函数的Goroutine中调用 //t.FailNow方法,而不能在我们在测试代码创建出的Goroutine中调用它。
  • t.Skip //调用t.Skip方法相当于先后对t.Log和t.SkipNow方法进行调用,而调用t.Skipf方法则相当于先后对 //t.Logf和t.Skip-Now方法进行调用。方法t.Skipped的结果值会告知我们当前的测试是否已被忽略。
  • t.Parallel // 标记为可并行运算

参考资料

go test 初始化— TestMain的使用
https://www.cnblogs.com/lanyangsh/p/8685989.html

打赏一个呗

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦