在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Test 的写法: 每一个test文件必须import 一个"testing" test文件下的每一个test case均必须以Test开头并且符合TestXxx形式,否则go test会直接跳过测试不执行 eg: main_test.go package main import ( "fmt" "testing" ) func TestPrint(t *testing.T) { res := Print1to20() fmt.Println("hey") if res != 210 { t.Errorf("wrong result of Print1to20") } } func TestPrint1(t *testing.T) { fmt.Println("test") } main.go package main func Print1to20() int { res := 0 for i := 0; i < 21; i++ { res += i } return res } func main() { Print1to20() } t.SkipNow()跳过当前case, 按PASS直接处理下一个case Errorf打印错误信息时,整个test case会被跳过 test case的入参为t *testing.T或者b *testing.B
go 的test不会保证多个TestXxx是顺序执行,但是通常情况下会按照顺序执行 使用t.Run来执行subtest可以做到控制test 输出以及test的顺序执行 func TestPrint(t *testing.T){ t.Run("a1",func(t *testing.T){fmt.PrintLn("a1")}), t.Run("a2",func(t *testing.T){fmt.PrintLn("a2")}), }
TestMain: 初始化test,并且使用m.Run()来调用其他tests,可以完成一些需要初始化的testing, 如数据库连接,打开文件, REST服务登录等 是test case 入口 func TestMain(m *testing.M){ //此处初始化操作 fmt.PrintLn("test start") m.Run() }
如果没有在TestMain函数中调用m.Run.则不会执行TestMain以外的tests
package main import ( "fmt" "testing" ) func testPrint(t *testing.T) { res := Print1to20() fmt.Println("hey") if res != 210 { t.Errorf("wrong result of Print1to20") } } func testPrint1(t *testing.T) { res := Print1to20() res++ if res != 211 { t.Errorf("wrong result of Print1to20") } } func TestAll(t *testing.T) { t.Run("testPrint", testPrint) t.Run("testPrint1", testPrint1) }
package main import ( "fmt" "testing" ) func TestPrint(t *testing.T) { res := Print1to20() fmt.Println("hey") if res != 210 { t.Errorf("wrong result of Print1to20") } } func TestPrint1(t *testing.T) { res := Print1to20() res++ if res != 211 { t.Errorf("wrong result of Print1to20") } } func TestMain(m *testing.M) { fmt.Println("starting...") m.Run() }
|
请发表评论