• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

go学习笔记(2)gotest

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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

  


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap