赞
踩
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
个人常用Fatalf,这里就来具体说一下,其他函数见参考的链接。
func (c *T) Logf(format string, args ...interface{})
Log 使用与 Printf 相同的格式化语法对它的参数进行格式化,然后将格式化后的文本记录到错误日志里面。 如果输入的格式化文本最末尾没有出现新行,那么将一个新行添加到格式化后的文本末尾。
1)对于测试来说,Logf 产生的格式化文本只会在测试失败或者设置了 -test.v 标志的情况下被打印出来;
2)对于基准测试来说,为了避免 -test.v 标志的值对测试的性能产生影响,Logf 产生的格式化文本总会被打印出来
func (c *T) FailNow()
将当前测试标识为失败并停止执行该测试,在此之后,测试过程将在下一个测试或者下一个基准测试中继续。
FailNow 必须在运行测试函数或者基准测试函数的 goroutine 中调用,而不能在测试期间创建的 goroutine 中调用。调用 FailNow 不会导致其他 goroutine 停止。
func (c *T) Fatalf(format string, args ...interface{})
调用 Fatalf 相当于在调用 Logf 之后调用 FailNow 。
项目结构
learnGo
└── main
├── compute.go
└── compute_test.go
compute.go
package main
import "errors"
func div(a,b int) (int,error) {
if b != 0{
return a/b,nil
} else{
return 0,errors.New("b is 0")
}
}
compute_test.go
package main
import "testing"
func TestDiv(t *testing.T) {
res,_ := div(4,2)
want := 2
if res != want{
t.Fatalf("期待:%d ,实际结果:%d",want,res)
}
}
main目录下运行
go test -v
结果如下:
=== RUN TestDiv
— PASS: TestDiv (0.00s)
PASS
ok learnGo/main 0.457s
以上我们就针对main包的compute.go文件进行了单元测试。
查看更多的选项,可使用
go help test
go help testflag
我们在main包中再添加str.go及str_test.go
str.go
package main
func getSub(str string,start,end int) string {
// 左闭右闭
if 0<=start&&start<end&&end<=len(str){
return str[start:end]
}else{
return ""
}
}
str_test.go
package main import "testing" func TestGetSub(t *testing.T) { astr := "lady_killer9" // 包含开头 res1 := getSub(astr,0,4) want1 := "lady" // 包含结尾 res2 := getSub(astr,4,len(astr)) want2 := "_killer9" // 范围错误 res3 := getSub(astr,1,len(astr)+1) want3 := "" if res1 != want1{ t.Errorf("期望:%s,实际结果:%s",want1,res1) } if res2 != want2{ t.Errorf("期望:%s,实际结果:%s",want2,res2) } if res3 != want3{ t.Errorf("期望:%s,实际结果:%s",want3,res3) } }
运行 go test -v,得到结果如下
=== RUN TestDiv
— PASS: TestDiv (0.00s)
=== RUN TestGetSub
— PASS: TestGetSub (0.00s)
PASS
ok learnGo/main 0.446s
go test会运行所有的单元测试,有时候我们只想测试某个文件
如果只是运行一个测试文件,可添加参数
go test -v 测试文件 源文件
运行go test -v str_test.go str.go, 结果如下:
=== RUN TestGetSub
— PASS: TestGetSub (0.00s)
PASS
ok command-line-arguments 0.619s
我们在compute.go中添加
func add(a,b int) int {
return a+b
}
在compute_test.go中添加
func TestAdd(t *testing.T) { a,b:=3,4 res := add(a,b) want := 7 if res != want{ t.Fatalf("期待:%d,实际结果:%d",want,res) } } ![img](https://img-blog.csdnimg.cn/img_convert/4984f6d61d0a073d351c4c4f5a4eb1f0.png) ![img](https://img-blog.csdnimg.cn/img_convert/8c4d8edef967464f29d989f72013aebc.png) ![img](https://img-blog.csdnimg.cn/img_convert/28f3670f465de785e4aa494c896bedfc.png) **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新** **[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)** 链图片转存中...(img-jeL9Bne3-1715383276462)] **既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!** **由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新** **[需要这份系统化的资料的朋友,可以戳这里获取](https://bbs.csdn.net/forums/4f45ff00ff254613a03fab5e56a57acb)**
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。