$GOPATH中项目目录下建立 main_test.go 文件(需要测试的文件默认以 XXX_test.go 命名)

 

 main.go文件中有个函数

func Print1to20() int {
  res := 0
  for i := 1; i <= 20; i++ {
	res += i
  }
  return res
}

main_test.go中

package main

import (
  "fmt"
  "testing"
)

func TestPrint(t *testing.T) {//函数名需写为TestXXX,T要大写,XXX首字母大写
  res := Print1to20()
  fmt.Println("hey")
  if res != 210 {
	t.Errorf("Wrong")//t.Errorf打印错误信息
  } }

cmd命令进入项目目录,执行 go test

 

执行go test -v

 

 

--------------------------------------------------------------------------------------------------

t.SkipNow()表示跳过当前测试函数,t.SkipNow()必须放在测试函数第一行

 

func TestPrint(t *testing.T) {
  t.SkipNow()//跳过TestPrint内容并继续下一个test,显示PASS
  res := Print1to20()
  fmt.Println("hey")
  if res != 210 {
	t.Errorf("Wrong")
  }
}

--------------------------------------------------------------------------------------------------

如果要顺序执行各个test,则用到 t.Run(string, func)

func TestPrint(t *testing.T) {
  t.Run("a1",func(t *testing.T){
	fmt.Println("a1")
  })

  t.Run("a3",func(t *testing.T){
	fmt.Println("a2")
  })

  t.Run("a2",func(t *testing.T){
	fmt.Println("a3")
  })
} 

一般会这么测试

//函数名 Test 大写
func TestComments(t *testing.T) {
    t.Run("自命名1", testS1)
    t.Run("自命名1", testS1)
    t.Run("自命名1", testS1)
}

//函数名 test 小写
func testS1(t *testing.T) {
    ...
}

func testS2(t *testing.T) {
    ...
}

func testS3(t *testing.T) {
    ...
}

--------------------------------------------------------------------------------------------------

如果要先执行某个test,则用 TestMain(m *testing.M) ,通常执行 文件打开 or 登录 or 数据库连接 等等

func TestMain(m *testing.M){
  fmt.Println("test main first")
  m.Run()//不加 m.Run() 则不能进行后面的test
}

--------------------------------------------------------------------------------------------------

【BenchMark】

 把一个BenchMark重复很多次(不定,程序觉得跑到稳态了就算完,所以BenchMark里面最好是确定的执行时间,不然永远跑不到稳态,永远也跑不完),用来测试性能

func BenchmarkAll(b *testing.B){//函数名BenchmarkXXX,B大写,XXX首字母大写
  for n := 0; n < b.N; n++ {
    Print1to20()
  } 
}

命令行执行 go test -bench=.     (程序只会跑带BenchMark的部分)

 

 

 一共跑了130842741次,每次耗时8.99纳秒

posted on 2020-08-19 16:33  longzhankunlun  阅读(169)  评论(0编辑  收藏  举报