如何在一个go框架中强制不同测试的测试顺序?

kgsdhlau  于 2022-12-07  发布在  Go
关注(0)|答案(2)|浏览(123)

如果我有不同的软件包,并且每个软件包都有一个测试文件(pkg_test.go),有没有办法确保它们以特定的顺序运行?
假设先执行pkg1_test.go,然后再执行其余的。
我试着使用Go频道,但它似乎挂起了。

izkcnapc

izkcnapc1#

考虑到go test ./...会触发所有软件包上的测试,但这并不明显......但会并行运行:请参见“Go: how to run tests for multiple packages?“。
go test -p 1将按顺序运行测试,但不一定按照您需要的顺序。
一个简单的脚本在以正确的预期顺序列出的包上调用go test会更容易实现。
6年后更新:最好的做法是“不”依赖于测试顺序。
所以issue 28592主张将-shuffle-shuffleseed添加到shuffle测试中。
CL 310033提到:
该CL向测试包和go test命令添加了一个新标志,该命令随机化测试和基准测试的执行顺序。
这对于识别测试或基准测试函数之间不需要的依赖关系非常有用。
默认情况下,该标志处于关闭状态。

  • 如果-shuffle设置为on,则系统时钟将用作种子值。
  • 如果-shuffle设置为整数N,则N将用作种子值。

在这两种情况下,将报告失败运行的种子,以便稍后可以重现。
2021年8月,Go 1.17在commit cbb3f09中被选中。
更多信息请访问“Benchmarking with Go“。

ruyhziif

ruyhziif2#

我找到了一个解决这个问题的方法。我将我的测试文件命名为:

A_{test_file1}_test.go
B_{test_file2}_test.go
C_{test_file3}_test.go

A B C将确保它们按顺序运行。

相关问题