首页  >  文章  >  后端开发  >  如何跨多个包顺序执行Go测试?

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

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-04 07:59:30169浏览

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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn