目的:单元测试的主要目的是验证代码的每个单元(函数、方法)是否按照预期工作。
提示:解决单元测试超时30s的问题在序号4
1 准备以_test.go结尾文件和导入testing包
在命名文件时需要让文件必须以_test结尾,在文件中导入testing包。单元测试源码文件可以由多个测试用例组成,每个测试用例函数需要以Test为前缀
func TestXXX(t *testing.T) |
(1) 测试用例文件不会参与正常的源码编译,不会被包含到可执行文件中;
(2) 测试用例文件使用go test指令来执行,没有也不需要main()作为函数入口。所有在以_test结尾的源码内以Test开头的函数会自动被执行;
(3) 测试用例可以不传入*testing.T参数。
测试代码如下:
注意:程序需要有go.mod文件,终端输入命令go mod init module即可生成
1 package main 2 import ( 3 "testing" 4 "fmt" 5 "time" 6 ) 7 func Test_Log(t *testing.T) { 8 t.Log("hello world") 9 t.Log("hello world jkjk") 10 fmt.Println("==============Test_Log===============") 11 } 12 func Test_World(t *testing.T) { 13 t.Log("start") time.Sleep(1 * time.Second) 14 t.Log("1s") 15 start := time.Now() 16 time.Sleep(10000 * time.Microsecond) 17 elapsed := time.Since(start) 18 fmt.Println(elapsed) 19 fmt.Println("==============Test_World===============") 20 }
2 终端输入命令进行golang单元测试
(1) go test -v 执行项目中所有的单元测试文件
在终端输入命令:go test -v,执行单元测试并打印详情,PASS表示测试用例运行成功,FAIL表示测试用例运行失败;OK表示执行完成,并且可以看到执行的时长。
(2) go test -v xxx_test.go执行指定单元测试文件
当项目中有多个要执行的测试文件时,可以执行指定单元测试文件,如在终端输入命令:go test -v time_test.go
(1) go test -run xxx -v 执行指定单元测试函数
当测试文件有多个测试函数执行,可以执行指定单元测试函数,如在终端输入命令:
go test -run Test_World -v
3 VScode测试进行golang单元测试
点击VScode视图左侧的测试按钮,点击module展开,可以看到项目的管理文件,点击对应文件的运行测试按钮执行单元测试,如点击module的运行测试按钮则执行所有文件的单元测试,也可以点击打开文件中测试函数的运行测试按钮执行单元测试。
单元测试执行完成后会出现绿色打钩的执行完成图标。点击视图和更多操作按钮(...),点击清除所有结果则执行完成图标消失。
在进行单元测试的过程中,可以点击取消测试运行按钮取消测试。
4 解决golang单元测试超时30s
测试代码如下:
1 package main 2 import ( 3 "testing" 4 "fmt" 5 "time" 6 ) 7 func Test_Log(t *testing.T) { 8 t.Log("hello world") 9 t.Log("hello world jkjk") 10 fmt.Println("==============Test_Log===============") 11 } 12 func Test_World(t *testing.T) { 13 t.Log("start") time.Sleep(25 * time.Second) 14 t.Log("25s") 15 start := time.Now() 16 time.Sleep(10000 * time.Microsecond) 17 elapsed := time.Since(start) 18 fmt.Println(elapsed) 19 fmt.Println("==============Test_World===============") 20 }
如果是在终端输入命令:go test -v进行单元测试,执行单元测试的程序总时长超过30s时也能够正常运行。
如果是在VScode的测试中点击运行测试按钮进行单元测试时,执行30s之前的测试函数,超过30s的测试函数则会跳过。
更改go test的超时时长:
(1) 点击VScode左下方的管理图标按钮
(2) 点击设置
(3) 在搜索区域输入:go test timeout
(4) 在Go:test timeout 输入框输入超时时长,如:1h
再次点击运行测试按钮执行单元测试,测试文件都能顺利执行,并且可以看到设置的超时时长1h
标签:Log,VScode,timeout30s,单元测试,go,Test,time,test From: https://www.cnblogs.com/sinberya/p/17598757.html