问题描述
最近遇到了一个小问题,就是明明写了测试,但是对整个工程进行go test的时候总有几个文件覆盖不到,但是运行单个测试的时候又可以看到文件是已经被覆盖了的。而且运行整个工程的test的时候对应文件都会有log输出,但是就是显示未覆盖。
原因分析
其实这是go test的问题,go test默认是不会统计跨包覆盖的。举个例子,如果你logic层的包的测试代码调用了dao层的代码,这时候对整个工程go test,被调用的dao层的代码是不算覆盖率的,输出html也能看出来dao层的代码是未覆盖状态。
解决方案
如果想统计跨包覆盖的话,可以在go test后面添加参数 --coverpkg="",内容是全量的包名,也可以用./…来表示当前目录下所有包。