rake测试运行的时间是多少?

时间:2010-12-29 03:45:17

标签: ruby-on-rails ruby unit-testing

我有一个项目,测试远非理想,运行所有测试需要大约15分钟,对我来说这是一个问题。 rake测试应该采取的最大值是多少?

我理解这是个人观点,请写下一些原因,或者粘贴一个链接来证明你的答案。

2 个答案:

答案 0 :(得分:3)

就像基线一样,我当前的应用程序有两组单元测试(对于非依赖于轨道的代码和依赖于轨道的代码)。在铁轨环境中运行rake时最耗时的2件事就是加载rails和bundle exec。这就是为什么我们将尽可能多的测试转移到非rails依赖的非bundle-exec环境中。因此,当我们接触现有系统的部分内容时,我们正在将规范转移到非轨道相关部分。

以下是我们当前测试套件的时间细分:

时间耙规格:no_rails 完成0.14229秒 141个例子,0个失败

真正的0m0.981s 用户0m0.783s sys 0m0.168s

时间规范 完成时间为11.86秒 677个例子,0个失败,2个未决

真正的0m28.613s 用户0m23.435s sys 0m3.180s

我确信你可以理解我们为什么要将非依赖于rails的代码示例从依赖于rails的代码示例中移除。保持代码不依赖于rails还有一些其他好处,但测试速度是最重要的。最大限度地减少反馈周期是必要的,以便从测试中获得最大的收益作为回归。

<强>更新 就像更新一样,当我们移动时,这是我们规范的当前统计数据。我们肯定发现速度是一种优势,以及将自己与铁轨隔离的设计压力。当您的规格快速运行时,您可以更频繁地运行它们,这可以最大限度地减少执行操作之间的反馈循环并查看系统是否仍然有效。 时间耙规格:no_rails 完成时间为0.36083秒 316个例子,0个失败,1个未决 真正的0m1.019s 用户0m0.858s sys 0m0.147s

time rake spec:with_rails 在12.86秒完成 706个例子,0个失败,2个未决 真正的0m21.316s 用户0m18.610s sys 0m1.954s

答案 1 :(得分:2)

如果不知道细节,就无法回答。你有很多测试用例吗?我听说大型系统有数百甚至数千个测试需要几个小时来完成一个完整的套件。

OTOH你可能只有一些缓慢的测试。您是否尝试过分割测试用例以查看是否需要花费特别长的时间?您是否有依赖于可能较慢资源的测试,例如网络或文件系统操作?