如果我有不同的包,每个包都有一个测试文件(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将确保它们按顺序运行。