gpt4 book ai didi

unit-testing - 真正的单元测试总是可以并行运行吗?

转载 作者:IT王子 更新时间:2023-10-29 02:23:46 24 4
gpt4 key购买 nike

背景:

我正在编写大量 go 代码,使用 go test 工具和提供的 "testing" 包进行测试。我所做的大部分测试都是 TDD 规程中的单元测试。这些被测试的“单元”永远不允许依赖于有状态的外部性,如持久存储、网络跃点等,但通常在“构造函数/构建器”函数中接收这些外部性的虚假内存实现(是的,我知道它们不是传统意义上的构造函数)。

问题:

go test 工具总是以相同的确定顺序运行测试函数,这一直困扰着我。在某些情况下,这允许竞争条件隐藏在代码中。找到这些错误的一种方法是设置 -race 标志。另一个可能是始终并行运行单元测试......

问题:

是否存在曾经孤立单元测试不能或不应该总是并行运行的情况(使用 -并行标志)?

最佳答案

parallel 标志实际上是一种测试测试本身的方法(除了加速测试之外)。当以非确定性顺序运行时发现测试随机中断表明测试错误与错误代码一样频繁。

Ruby 的测试运行器做了一些有趣的事情(Rspec 和 Minitest)——它们在每次运行时随机化测试顺序,但打印用于运行的整数种子。这允许重现错误,同时仍然确保没有测试依赖于隐式排序。我不知道有任何 Go 测试运行器会这样做,但这会非常有用。

关于unit-testing - 真正的单元测试总是可以并行运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32462023/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com