将t.Parallel()放在测试的顶部有什么实际好处?

时间:2015-01-21 02:31:47

标签: testing go

go testing包定义了a Parallel() function

  

并行表示该测试将与其他并行测试并行(并且仅与其一起)。

然而,当我搜索为标准库编写的测试时,我发现只有少数几种用途。

我的测试速度非常快,而且通常不会依赖于改变共享状态,所以我一直在添加它,认为它会导致加速。但它没有在标准库中使用的事实让我停下来。将t.Parallel()添加到测试中的实际好处是什么?

2 个答案:

答案 0 :(得分:5)

This thread(构思和讨论t.Parallel)表示 t.Parallel()仅用于慢速测试;平均测试速度非常快,以至于并行执行的任何收益都可以忽略不计。

以下是一些引用(仅来自Russ,但没有太多反对意见):

Russ Cox [link]:

  

关于什么是正确的默认值存在一些问题。   我们的大多数测试运行得如此之快,以至于并行化它们   不必要。我认为这可能是正确的模型,   这表明并行化是例外,   不是规则。   作为一个例外,这可以容纳一个       t.Parallel()   测试可以调用的方法来声明它没问题   与其他测试并行运行。

Russ Cox再次[link]:

  

非并行测试应该很快。他们无关紧要。   如果两个测试都很慢,那么你就可以了。如果它困扰你,你可以将它们平行。   如果一个测试很慢,那么,一个测试很慢。

答案 1 :(得分:3)

这似乎是先提出on the golang-dev group

初始请求声明:

  

“我想添加一个与gotest并行运行测试的选项。   我的动机来自于运行硒测试,其中每个测试都相互独立,但需要时间。“

该主题包含对实际利益的讨论。

它实际上只是允许您同时运行不相关的,长时间运行的测试。它并没有真正用在标准库中,因为几乎所有功能都需要尽可能快(一些加密异常等)。

进一步讨论here,提交是here