如何在go框架中为不同的测试强制执行测试顺序



如果我有不同的包,每个包都有一个测试文件(pkg_test.go),有没有办法确保它们以特定的顺序运行?

假设先执行pkg1_test.go,然后执行其余部分。

我试着使用go频道,但它似乎挂断了。

考虑到go test ./...在所有包上触发测试,这并不明显。。。但是并行运行:参见";Go:如何为多个包运行测试&";。

go test -p 1将按顺序运行测试,但不一定按您需要的顺序运行。

在按正确预期顺序列出的包上调用go test的简单脚本会更容易


6年后更新:最佳实践是而不是依赖测试订单
所以问题28592主张将-shuffle-shuffleseed添加到shuffle测试中。

CL 310033提到:

该CL向测试包和go test命令添加了一个新标志其随机化测试和基准测试的执行顺序。

这对于识别不需要的依赖关系非常有用在测试或基准测试函数之间。

默认情况下,该标志处于禁用状态。

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

在这两种情况下,种子都会被报告为失败的运行,以便以后可以复制。

在提交cbb3f09中获得Go 1.17(2021年8月)。

请参阅";用Go进行基准测试";。

我找到了一个破解方法。我将我的测试文件命名如下:

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

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

最新更新