首页 > 后端开发 > Golang > 正文

如何跨多个包顺序执行Go测试?

Mary-Kate Olsen
发布: 2024-11-04 07:59:30
原创
166 人浏览过

How to Execute Go Tests Sequentially across Multiple Packages?

如何顺序跨多个 Go 包执行测试

使用 go test ./... 对多个包执行测试时,这一点很重要考虑并行化方面。默认情况下,测试是跨包同时运行的。但是,某些场景(例如基于数据库的测试)需要顺序执行。

在提供的示例中,由于并行测试执行而出现数据库争用。每个测试文件都定义了全局数据库变量,这在测试同时运行时可能会导致冲突。

解决方案:

要强制跨包顺序执行,请使用未记录的 -p 标志以及 go test 如下:

go test -p 1 ./...
登录后复制

-p 1 标志串行构建和测试所有包,解决争用问题。

替代解决方案(使用 Shell 脚本) :

如果使用 -p 1 标志不可行,可以采用基于 shell 脚本的替代方法。这是一个 Bash 脚本示例:

find . -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test
登录后复制

此脚本列出包含 .go 文件的所有子目录,删除重复项,并按顺序在每个子目录上运行 go test。

以上是如何跨多个包顺序执行Go测试?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!