在CI中运行单元测试的最佳最长时间的最佳实践

时间:2011-07-18 18:15:00

标签: unit-testing continuous-integration

我们正在与TeamCity在我们公司进行持续集成,并且我们在每次提交时都会运行单元测试(1分钟窗口)。

最近,我们正在讨论一批单元测试应该持续多长时间但最短时间越好。

但是,我想知道一批单元测试的最佳实践是什么?

4 个答案:

答案 0 :(得分:1)

单元测试应该运行直到它们全部完成;不要基于运行时限制单元测试集。如果您有大量的单元测试,并且需要花费很长时间才能运行,请调查获得更快的硬件以运行CI系统;购买更昂贵的硬件远比在没有问题的情况下更便宜,这些单元测试会在问题成为主要错误之前发现问题。

答案 1 :(得分:1)

“尽可能短。”

但实际上,这取决于你究竟在问什么。你应该删除测试来缩短构建时间吗?可能不是。您是否可以限制在每次提交构建上运行的测试范围?可能是吧。你应该限制每晚构建的测试吗?可能不是。构建的确切需要多长时间取决于您的团队,流程以及如何将CI集成到其中。

答案 2 :(得分:1)

您可以在单元测试中构建优先级,并仅使用子集作为签入门(构建验证测试或BVT)。不经常运行较低优先级的测试(例如,每日构建,每个测试通过或每个产品发布)。然后对满足您的开发团队的每个(或每个套件)分别设置执行时间限制。

我的优先考虑的是我们在修复因测试失败而发出的错误的速度。 P0的意思是“必须修理,即使我们必须按时完成”,P3意味着“可能永远不会修复”。

我参与过的其中一个团队表示,对于BVT,每个功能不超过2分钟,并且对优先级较低的测试没有时间限制。开发人员必须运行大约5个测试套件,并且我们的签到量合理排队10分钟的伙伴构建是合理的。但是我们的“单元测试”是巨大的,特殊环境要求的集成测试,所以YMMV。

答案 3 :(得分:1)

非常简单,使(单元)测试更快或并行化...单元测试应该有效......你不应该在运行时限制它们......