Go:同时运行多个包的测试:解决争用
在子目录下测试多个包时,使用 go test 运行单个测试会成功。但是,尝试使用 go test ./... 同时运行所有测试会导致失败。该问题源于访问公共资源(例如共享数据库)时的潜在争用。
如果多个测试同时在同一数据库上运行,则各个测试文件中使用的全局变量可能会产生争用。为了防止这种情况,请考虑使用 -parallel 1 标志。这会强制在每个包中顺序执行测试。
尽管使用 -parallel 1,测试仍可能因争用而失败。这表明来自不同包的测试正在同时运行。为了消除包之间并行的任何可能性,解决方法是使用 bash 脚本或别名手动运行测试。以下命令序列可实现此目的:
find . -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test
此命令列出包含 *.go 文件的唯一子目录,并按顺序对每个子目录执行 go test。
作为替代方案,可以使用以下 shell 脚本或可以使用alias:
function gotest(){ find -name '*.go' -printf '%h\n' | sort -u | xargs -n1 -P1 go test; }
通过运行gotest .,可以顺序执行当前目录下的所有测试。
虽然不像go test ./...那么简单,但是这个解决方法确保测试跨包顺序执行,解决并行测试执行引起的任何争用问题。
以上是如何对多个包依次运行 Go 测试以避免争用?的详细内容。更多信息请关注PHP中文网其他相关文章!

Go语言使用"encoding/binary"包进行二进制编码与解码。1)该包提供binary.Write和binary.Read函数,用于数据的写入和读取。2)需要注意选择正确的字节序(如BigEndian或LittleEndian)。3)数据对齐和错误处理也是关键,确保数据的正确性和性能。

1)usebybytes.joinforconcatenatinges,2)bytes.bufferforincrementalWriter,3)bytes.indexorbytes.indexorbytes.indexbyteforsearching bytes.bytes.readereforrednerncretinging.isnchunk.ss.ind.inc.softes.4)

theencoding/binarypackageingoiseforporptimizingBinaryBinaryOperationsDuetoitssupportforendiannessessandefficityDatahandling.toenhancePerformance:1)usebinary.nativeendiandiandiandiandiandiandiandian nessideendian toavoid avoidByteByteswapping.2)

Go的bytes包主要用于高效处理字节切片。1)使用bytes.Buffer可以高效进行字符串拼接,避免不必要的内存分配。2)bytes.Equal函数用于快速比较字节切片。3)bytes.Index、bytes.Split和bytes.ReplaceAll函数可用于搜索和操作字节切片,但需注意性能问题。

字节包提供了多种功能来高效处理字节切片。1)使用bytes.Contains检查字节序列。2)用bytes.Split分割字节切片。3)通过bytes.Replace替换字节序列。4)用bytes.Join连接多个字节切片。5)利用bytes.Buffer构建数据。6)结合bytes.Map进行错误处理和数据验证。

Go的encoding/binary包是处理二进制数据的工具。1)它支持小端和大端字节序,可用于网络协议和文件格式。2)可以通过Read和Write函数处理复杂结构的编码和解码。3)使用时需注意字节序和数据类型的一致性,尤其在不同系统间传输数据时。该包适合高效处理二进制数据,但需谨慎管理字节切片和长度。

“字节”包装封装becapeitoffersefficerSoperationsOnbyteslices,cocialforbinarydatahandling,textPrococessing,andnetworkCommunications.byteslesalemutable,允许forforforforforformance-enhangingin-enhangingin-placemodifications,makaythisspackage

go'sstringspackageIncludeSessentialFunctionsLikeContains,trimspace,split,andReplaceAll.1)contunsefefitedseffitedseffiticefliceCheckSforSubStrings.2)trimspaceRemovesWhitespaceToeensuredity.3)splitparseSseSsess structertextrentextrentedTextlikeCsv.4)replastextlikecsv.4)


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具

EditPlus 中文破解版
体积小,语法高亮,不支持代码提示功能

记事本++7.3.1
好用且免费的代码编辑器