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

这篇具有很好参考价值的文章主要介绍了【Golang】解决Go test执行单个测试文件提示未定义问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

背景

根本原因

解决方法

解决

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

总结

 资料获取方法


背景

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

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

bingo@Mac Interface_test$ go test -v getinfo_test.go 
# command-line-arguments
./getinfo_test.go:34:23: undefined: touch
./getinfo_test.go:35:23: undefined: verify
...
FAIL	command-line-arguments [build failed]

这也许是很多数人会遇到的一个错误,搜索引擎上没有找到相关的信息,有的人做了相关的记录来提示后来人:执行单文件存在引用时会报错。

这可能也是使用golang 做测试的弊端,因为发展时间不长,没有像Python或者Java那样成熟的社区;废话不多说,我们一起来看看这个问题为什么会发生。

根本原因

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

解决方法

解决

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

bingo@Mac Interface_test$ go test -v getinfo_test.go  lib.go 
ok      command-line-arguments  0.008s
多级引用或多个引用包的情况

如果对多个包存在引用关系,或者引用的包对当前目录的其他文件存在引用,也都是一样的方法,把他们加在命令后方即可。

下面这个是一个多引用包的实例:

【Golang】解决Go test执行单个测试文件提示未定义问题,自动化测试,软件测试,golang,开发语言,后端,自动化,软件测试工程师,软件测试,自动化测试

总结

 测试单个文件,一定要带上被测试的原文件,如果原文件有其他引用,也需一并带上。


 资料获取方法

【留言777】

【Golang】解决Go test执行单个测试文件提示未定义问题,自动化测试,软件测试,golang,开发语言,后端,自动化,软件测试工程师,软件测试,自动化测试

【Golang】解决Go test执行单个测试文件提示未定义问题,自动化测试,软件测试,golang,开发语言,后端,自动化,软件测试工程师,软件测试,自动化测试

各位想获取源码等教程资料的朋友请点赞 + 评论 + 收藏,三连!

三连之后我会在评论区挨个私信发给你们~文章来源地址https://www.toymoban.com/news/detail-621523.html

到了这里,关于【Golang】解决Go test执行单个测试文件提示未定义问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • GO——单元测试(test)

    go test用来做什么 做单元测试,测试函数是否符合预期 go test在哪个包 testing 如何使用 参考: https://geektutu.com/post/quick-go-test.html 以 my_func.go 中的Add方法为例 在同一个文件夹下添加my_func_test.go文件 测试文件以_test.go为结尾 里面的测试方法以Test开头,但是不一定是要跟方法名,

    2024年01月20日
    浏览(50)
  • Go 工具链详解(三): 代码测试神器 go test

    go test 是 Go 工具链中的一个命令,用于编译和运行按照要求编写的 Golang 测试代码,并生成测试报告。 要求将测试代码所在的文件命名为 *_test.go,如此命名的文件不会被 go build 命令编译,但是会被 go test 进行编译和运行。在 *_test.go 中有几种类型的函数: 单元测试函数:以

    2024年02月16日
    浏览(45)
  • 【测试开发】单元测试、基准测试和性能分析(以 Go testing 为例)

    你写不出 bug-free 的代码。 你认为自己写出了 bug-free 的代码,但它在你意想不到的地方出错了。 你觉得自己写出了永不出错的代码,但它的性能十分糟糕。 “测试左移”距离真正落地或许还有不短的距离,但在开发过程中注重自己的代码质量,至少养成 写单测 的习惯还是很

    2024年02月04日
    浏览(50)
  • java程序启动时自动执行方法 @PostConstruct,单元测试@Test

    java程序启动时自动执行方法,在方法上添加@PostConstruct注解即可,可以代替单元测试junit的@Test注解 @PostConstruct //程序启动时自动执行方法 @Test //需要选中该方法运行启动(单元测试) java 代码----程序启动时自动执行方法 @PostConstruct java 代码----需要选中该方法运行启动(单元

    2024年02月05日
    浏览(44)
  • macOS 运行xxxx.command文件提示”无法执行,因为您没有正确的访问权限“解决办法

    在macOS Catalina 、macOS Big Sur、macOS Monterey 12、macOS Ventura 13系统直接双击.command文件运行时候提示”无法执行,因为您没有正确的访问权限“怎么办? 文件“xxxx.command”无法执行,因为您没有正确的访问权限。 要查看或更改访问权限,请在“访达”中选择该文件,然后选取“文

    2024年02月10日
    浏览(68)
  • Win11提示该文件没有与之关联的应用来执行该操作该如何解决

            当我们在想办法 去除桌面图标左下角的箭头时 ,经常在网上搜到删除注册表中 IsShortcut 文件的方式,但是这样的方式只适用于win8或win10系统。如果是win11系统的话这样做也会消除 大多数 图标左下角的箭头,虽然桌面的图标可以正常打开但是会造成系统任务栏固定

    2023年04月08日
    浏览(51)
  • JUnit5单元测试提示“Not tests were found”错误

    JUnit5单元测试提示“Not tests were found”错误,如下图所示: 或者 问题解析: 1)使用@Test注解时,不能有返回值; 2)使用@Test注解时,不能使用private; 存在以上情况时执行单元测试,都会提示“Not tests were found”错误,如下图所示: 正确的示例是使用public void定

    2024年01月16日
    浏览(54)
  • 测试工具 go-stress-testing/fortio/vegeta 使用体验

    go-stress-testing 是一款由go语言实现的压测工具,源码开源、支持二次开发、可以压测http、webSocket请求、私有rpc调用,使用协程模拟单个用户,可以更高效的利用CPU资源 下载地址 注意需要将项目源码 clone 到 $GOPATH 目录下 mac电脑下载如下这个 放到 $GOPATH 目录下 赋权 chmod +x go

    2024年02月08日
    浏览(60)
  • Go 单元测试中 testing 包的数据类型M/T/B/PB

    testing.M 对main方法进行的测试 testing.T 对函数/方法进行单元测试 testing. B 对性能进行的测试 testing.PB - 命令 作用 go test 【包名】或 go test . 运行当前package内的所有用例 go test ./… 或 go test 【目录名】/… 递归执行当前目录下所有用例: go test -v [单元测试文件]. // 如 go test -v f

    2024年04月17日
    浏览(35)
  • IntelliJ IDEA中执行@Test单元测试时报错Class not found: "..."终极办法

    之前也出现过在编译时找不到测试类的问题,但之前的那篇博文,并不是终极办法IntelliJ IDEA中执行@Test单元测试时报错Class not found: \\\"...\\\"Empty test suite  出现类似问题,普遍时同然就报错了,原因是使用IDEA,从别人的Git上拉取代码后,别人把一些idea的配置文件也传上了,到时更

    2024年02月05日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包