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

【Golang】解决Go test执行单个测试文件提示未定义问题

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

背景

很多人记录过怎么执行Go test单个文件或者单个函数,但是要么对执行单文件用例存在函数或变量引用的场景避而不谈,要么提示调用了其它文件中的模块会报错。其实了解了go test命令的机制之后,这个问题就迎刃而解了。

也是一个同事向我求助我才知道有这样一个问题存在,因为场景特殊他只想执行我们的测试代码其中一个文件中的测试代码,因为调用的信息都在同一目录(package)下,原代码执行是不存在引用问题的,直接执行go test也是可以运行的,但是单独运行其中一个文件时,出现了下面的错误:

根本原因

其实从看看上面的这段提示:build failed,构建失败,我们应该就能看出一下信息。go test与其他的指定源码文件进行编译或运行的命令程序一样(参考:go run和go build),会为指定的源码文件生成一个虚拟代码包——“command-line-arguments”,对于运行这次测试的命令程序来说,测试源码文件getinfo_test.go是属于代码包“command-line-arguments”的,可是它引用了其他包中的数据并不属于代码包“command-line-arguments”,编译不通过,错误自然发生了。

解决方法

解决
知道了原因之后,解决的方法就出来了,执行命令时加入这个测试文件需要引用的源码文件,在命令行后方的文件都会被加载到command-line-arguments中进行编译。。示例如下:

多级引用或多个引用包的情况

总结

测试单个文件,一定要带上被测试的原文件,如果原文件有其他引用,也需一并带上。
找到的这个帖子确实解决了一直疑惑的问题,转载记录,希望能帮到更多的人。

转载

https://www.cnblogs.com/Detector/p/10010292.html


鲜花

握手

雷人

路过

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

请发表评论

全部评论

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

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

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

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

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