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() }