【发布时间】:2010-09-29 18:35:03
【问题描述】:
Michael Feathers,在 Working Effectively With Legacy Code,第 13-14 页提到:
需要 1/10 的单元测试 第二个运行是一个缓慢的单元测试...... 如果 [单元测试] 运行不快,他们 不是单元测试。
如果一个人有 30,000 次测试,我可以理解为什么 1/10 秒太慢,因为它需要将近一个小时才能运行。但是,这是否意味着 1/11 秒更好?不,不是真的(因为它只快了 5 分钟)。因此,硬性规定可能并不完美。
因此,当考虑到单元测试的速度有多慢时,也许我应该重新表述这个问题。 对于开发人员来说等待单元测试套件完成的时间太长了?
举一个测试速度的例子。看看几个 MSTest 单元测试持续时间:
0.2637638 seconds
0.0589954
0.0272193
0.0209824
0.0199389
0.0088322
0.0033815
0.0028137
0.0027601
0.0008775
0.0008171
0.0007351
0.0007147
0.0005898
0.0004937
0.0004624
0.00045
0.0004397
0.0004385
0.0004376
0.0003329
所有 21 个单元测试的平均值为 0.019785 秒。请注意,最慢的测试是由于它使用 Microsoft Moles 来模拟/隔离文件系统。
因此,在这个示例中,如果我的单元测试套件增加到 10,000 个测试,它可能需要超过 3 分钟才能运行。
【问题讨论】:
-
我认为你的平均值是错误的。
-
你是对的。我已经调整过了。 0.019785 而不是 0.19785
标签: unit-testing performance mstest