test测试用例

测试用例的文件名必须以XXX_test.go的格式.
cp程序制作q<115.28.8.00.9.9>
文件名的XXX不必一定和被测试文件的名称一样,但是保持一致是一个很好的习惯.
测试用例中的测试函数名必须是TestXXX(t *testing.T)如此定义,否则不执行
每一个test文件必须要import一个testing包
go test或者go test -v命令测试当前包目录下的所有的tests
用t.Errorf来打印错误信息,会输出错误信息,并且跳过当前测试函数
t.SkipNow()跳过当前测试并且直接按PASS处理继续下一个test
go的test不会保证多个TestXXX()是顺序执行的,但是通常会顺序执行
要保持顺序执行需要使用subTest,即在test内使用t.Run()来顺序调用要测试的test函数,一般被调用的test,会把函数名定位testXXX,这样的话就不会自动运行testXXX,而是被t.Run()来调用
使用TestMain(m *tesging.M)作为初始话test,并且使用m.Run()来调用其他test可以完成一些初始话操作的testing,该函数必须调用m.Run()
如果没有在TestMain中调用m.Run()则除了testMain之外的所有其他test都不会执行

package main
import(
"testing"
"fmt"
)

//因为是小写开头所以不会运行
func testPrint(t testing.T){
//该方法可以跳过当前函数的测试,并通过测试
t.SkipNow()
res := MyFunc()
if res {
t.Errorf("wrong")
}
}
//因为是小写开头所以不会运行
func testprint1(t
testing.T){
res := MyFunc()
if !res {
t.Errorf("wrong 1")
}
}

func TestAll(t *testing.T){
//使用t.Run()调用函数来做顺序执行
t.Run("TestPrint", testPrint)
t.Run("TestPrint1", testPrint1)
}

//初始化函数,首先运行该函数
func TestMain(m *testing.M){
fmt.Println("this is Main func")
//必须要调用该函数,否则除了TestMain()其他函数都不会执行
m.Run()
}