Testing 将t.Parallel()放在测试的顶端有什么实际好处?
goTesting 将t.Parallel()放在测试的顶端有什么实际好处?,testing,go,Testing,Go,go测试包定义: 并行信号表示此测试将与(且仅与)其他并行测试并行运行 然而,当我搜索为标准库编写的测试时,我发现这个函数只有一些用途 我的测试速度非常快,通常不依赖于改变共享状态,所以我一直在添加这个,认为这会导致加速。但事实上,它没有在标准库中使用,这让我停了下来。将t.Parallel()添加到测试中的实际好处是什么?这似乎是最先提到的 最初的请求指出: “我想添加一个选项,与gotest并行运行测试。 我的动机来自于运行selenium测试,其中每个测试彼此非常独立,但它们需要时间。”
测试
包定义:
并行信号表示此测试将与(且仅与)其他并行测试并行运行
然而,当我搜索为标准库编写的测试时,我发现这个函数只有一些用途
我的测试速度非常快,通常不依赖于改变共享状态,所以我一直在添加这个,认为这会导致加速。但事实上,它没有在标准库中使用,这让我停了下来。将
t.Parallel()
添加到测试中的实际好处是什么?这似乎是最先提到的
最初的请求指出:
“我想添加一个选项,与gotest并行运行测试。
我的动机来自于运行selenium测试,其中每个测试彼此非常独立,但它们需要时间。”
该线程包含对实际好处的讨论
它实际上只是允许您同时运行无关的、长期运行的测试。标准库中并没有真正使用它,因为几乎所有的功能都需要尽可能快(一些加密异常等)
还有进一步的讨论,commit is(其中构思并讨论了t.Parallel
)表示t.Parallel()
仅用于慢速测试;平均测试速度如此之快,以至于并行执行的任何收益都可以忽略不计。
以下是一些引述(仅来自俄罗斯,但没有太多反对):
[]:
关于什么是正确的违约,存在一些问题。
我们的大多数测试运行得如此之快,以至于并行化它们是非常困难的
不必要。我认为这可能是正确的模式,
这表明并行化是个例外,
不是规则。
作为例外情况,这可以通过
t、 平行()
方法,测试可以调用该方法来声明它是正常的
与其他测试并行运行
罗斯·考克斯又一次[]:
非并行测试应该是快速的。它们无关紧要。
如果两个测试都很慢,那么你就不能。如果它困扰着你,你就不能将它们并行。
如果一个测试很慢,那么,一个测试很慢
很好的发现,打败我的方法!:)+1@weberc2我认为你的回答为性病库中缺乏流行率提供了更好的理由。第二句话概括了为什么他们没有通过std-lib测试并“并行化”它们。