【问题标题】:Spring rspec not speeding up testsSpring rspec 没有加速测试
【发布时间】:2021-04-19 15:00:32
【问题描述】:

在我们的测试套件中运行单个测试需要 20 到 30 秒。在添加 springspring-commands-rspec 之前,运行测试的输出如下所示。

Finished in 21.99 seconds (files took 21.64 seconds to load)
1 example, 0 failures

Randomized with seed 52406

22 秒的文件加载时间表明添加上述 gem 会有所帮助,但这样做后测试仍然很慢(我正在使用 bundle exec spring rspec [path_to_spec] 运行。新输出(见下文)表明文件时间已事实上已经大幅提升(从 21.64 秒降低到 1.25 秒),但测试的整体速度基本相同。根据我所读到的关于添加这些宝石的预期效果,这似乎非常奇怪和意外。

Finished in 21.86 seconds (files took 1.25 seconds to load)
1 example, 0 failures

Randomized with seed 7594

关于为什么测试仍然很慢的任何想法,有没有人有关于如何解决这个问题/加快测试的提示?谢谢。

【问题讨论】:

  • 我会先运行rspec --profile
  • 感谢您的提示!

标签: ruby-on-rails ruby spring rspec


【解决方案1】:

说实话,这是我所期望的。 Spring 存在的理由是加速文件的加载——一旦 RSpec 开始运行,Spring 的工作就完成了。而且它做得很好——从 21.64 秒到 1.25 秒非常好!

现在您可以专注于 RSpec 正在做什么以及如何加快速度。虽然 RSpec 确实有一个 --profile 选项,它会告诉您哪些示例运行最慢,但在上面的输出中您只有一个示例,因此不会告诉您任何您不知道的内容。

如果系统测试花费时间来启动某种形式的无头浏览器,那么您可能会发现添加更多测试不会使运行时间增加一倍或三倍,因为设置是跨测试共享的并且“缓慢的测试套件”的印象可能会消失。另一方面,如果运行缓慢的示例是单元测试,我会非常担心。

Evil Martians 网站上的这篇文章有一些提示,可以查看整个测试套件的慢补丁在哪里(主要涉及 TestProf gem)。对于单次测试来说,这可能有点过头了,但如果你用尽了其他方法来寻找线索,你可能会发现它有些用处。

【讨论】:

  • 也可能是作者只是从一个更大的测试套件中运行一个测试。
  • 可能是——但 21.86 秒的运行时间只是一个示例。正如我所说,对于一个无论你运行多少个测试都有固定设置成本的系统测试,这与你在哪里运行应该是一个相当简单的单元测试是不同的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-01-13
  • 2011-09-30
  • 1970-01-01
  • 2010-11-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-09
相关资源
最近更新 更多