go testing
包定义了a Parallel() function:
并行表示该测试将与其他并行测试并行(并且仅与其一起)。
然而,当我搜索为标准库编写的测试时,我发现只有少数几种用途。
我的测试速度非常快,而且通常不会依赖于改变共享状态,所以我一直在添加它,认为它会导致加速。但它没有在标准库中使用的事实让我停下来。将t.Parallel()
添加到测试中的实际好处是什么?
答案 0 :(得分:5)
This thread(构思和讨论t.Parallel
)表示 t.Parallel()
仅用于慢速测试;平均测试速度非常快,以至于并行执行的任何收益都可以忽略不计。
以下是一些引用(仅来自Russ,但没有太多反对意见):
关于什么是正确的默认值存在一些问题。 我们的大多数测试运行得如此之快,以至于并行化它们 不必要。我认为这可能是正确的模型, 这表明并行化是例外, 不是规则。 作为一个例外,这可以容纳一个 t.Parallel() 测试可以调用的方法来声明它没问题 与其他测试并行运行。
Russ Cox再次[link]:
非并行测试应该很快。他们无关紧要。 如果两个测试都很慢,那么你就可以了。如果它困扰你,你可以将它们平行。 如果一个测试很慢,那么,一个测试很慢。
答案 1 :(得分:3)
这似乎是先提出on the golang-dev group。
初始请求声明:
“我想添加一个与gotest并行运行测试的选项。 我的动机来自于运行硒测试,其中每个测试都相互独立,但需要时间。“
该主题包含对实际利益的讨论。
它实际上只是允许您同时运行不相关的,长时间运行的测试。它并没有真正用在标准库中,因为几乎所有功能都需要尽可能快(一些加密异常等)。