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

Testing 将t.Parallel()放在测试的顶端有什么实际好处?,testing,go,Testing,Go,go测试包定义: 并行信号表示此测试将与(且仅与)其他并行测试并行运行 然而,当我搜索为标准库编写的测试时,我发现这个函数只有一些用途 我的测试速度非常快,通常不依赖于改变共享状态,所以我一直在添加这个,认为这会导致加速。但事实上,它没有在标准库中使用,这让我停了下来。将t.Parallel()添加到测试中的实际好处是什么?这似乎是最先提到的 最初的请求指出: “我想添加一个选项,与gotest并行运行测试。 我的动机来自于运行selenium测试,其中每个测试彼此非常独立,但它们需要时间。”

go
测试
包定义:

并行信号表示此测试将与(且仅与)其他并行测试并行运行

然而,当我搜索为标准库编写的测试时,我发现这个函数只有一些用途


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

这似乎是最先提到的

最初的请求指出:

“我想添加一个选项,与gotest并行运行测试。 我的动机来自于运行selenium测试,其中每个测试彼此非常独立,但它们需要时间。”

该线程包含对实际好处的讨论

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

还有进一步的讨论,commit is

(其中构思并讨论了
t.Parallel
)表示
t.Parallel()
仅用于慢速测试;平均测试速度如此之快,以至于并行执行的任何收益都可以忽略不计。

以下是一些引述(仅来自俄罗斯,但没有太多反对):

[]:

关于什么是正确的违约,存在一些问题。 我们的大多数测试运行得如此之快,以至于并行化它们是非常困难的 不必要。我认为这可能是正确的模式, 这表明并行化是个例外, 不是规则。 作为例外情况,这可以通过 t、 平行() 方法,测试可以调用该方法来声明它是正常的 与其他测试并行运行

罗斯·考克斯又一次[]:

非并行测试应该是快速的。它们无关紧要。 如果两个测试都很慢,那么你就不能。如果它困扰着你,你就不能将它们并行。 如果一个测试很慢,那么,一个测试很慢


很好的发现,打败我的方法!:)+1@weberc2我认为你的回答为性病库中缺乏流行率提供了更好的理由。第二句话概括了为什么他们没有通过std-lib测试并“并行化”它们。