我想在一个程序包中并行运行测试。我们知道testing.Parallel
function使我们能够在一个程序包中并行运行两个测试,但是有没有一种方法可以自动使一个程序包中的所有测试并行运行而无需调用t.Parallel()
?
例如,是否可以将任何标志放入go test
中以使具有功能签名func(t *testing.T)
的所有测试并行运行?
答案 0 :(得分:2)
这来自commit f80d8fb和Go1(2011年10月)
一个选项(--parallel
)是debated at the time,但很快被拒绝了:
如果并行运行,许多测试将无法进行。 (很多人也会。)
--parallel
标志的存在意味着脚本等将需要将其打开,并且测试必须能够保护自己免受错误运行的影响。我建议将已知能够运行的单个测试列入白名单 并行,最简单的方法是命名它们 不一样。
我喜欢
t.Parallel
。
很明显,哪些测试是并行的,它不是全局默认值,因此您可以将其仅应用于既适当又必要的测试中, 行为很棒:所有非平行运行 首先-意味着容易-然后是平行 可以咀嚼CPU。