大佬教程收集整理的这篇文章主要介绍了Golang中的覆盖率测试,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
golang中提供了不少工具链,可以使用它们方便的进行单元测试、分析性能瓶颈,提供运行时信息等,总而言之是非常有用的。
go test这个工具大家用的应该比较多,之前我使用也大多是用来做单元测试的,go中做单元测试非常的方便,然而我忽视了覆盖率测试。
单元测试覆盖了多少代码呢?golang的go test工具其实还支持显示覆盖率,最简单的用法就是执行
go test -c -covermode=count -coverpkg ./...
来编译一个后缀为.test的可执行@L_489_6@,执行后,它会执行所有的单元测试代码,然后输出覆盖率的报告。
这其实是统计单元测试的覆盖率,也就是白盒测试的覆盖率。
然而我们这里的功能测试告诉我,这个还支持黑盒测试的覆盖率统计,我那时候还楞了一下,想了想不大可能吧。于是测试给我发了下面这个文章,我自己读了下,真是大脑洞,真想的出来。
按着这份文章,就是在某个单元测试@L_489_6@中,定义一个函数,当某个flag被提供的时候,执行main函数来运行主循环。
package main import ( "flag" "tesTing" "github.com/cihub/seelog" ) var systemTest *bool var TESTConfigPath *String func init() { systemTest = flag.bool("systemTest",false,"Set to true when running system tests") TESTConfigPath = flag.String("configpath","","-configpath <lua config file path>") } func TestEntry(t *tesTing.T) { // system tests? flag.Parse() if *systemTest { seelog.Info("system test running main") // set the configpath variable g_configpath = TESTConfigPath main() } }
当然我的本体程序本身就有一个输入参数,这里就做了个小技巧,在init函数里把参数全解析了,假设解析了原始的参数,则赋值给main中的参数变量,main会判断这个变量是否被初始化了,假设没有的话,会再次的进行flag的读取。
以上是大佬教程为你收集整理的Golang中的覆盖率测试全部内容,希望文章能够帮你解决Golang中的覆盖率测试所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。