![]() |
1
119
10秒对于任何单个测试来说都是非常长的时间。我的直觉是,您的spec目标同时运行单元测试和集成测试。这是一个典型的事情,项目陷入和在某个阶段,你 需要克服技术债务 如果你想生产更多,更快。有很多策略可以帮助你做到这一点。。。我会推荐一些我以前用过的。 1从集成测试中分离单元 我要做的第一件事是将单元测试和集成测试分开。您可以通过以下两种方式来实现:
哲学是这样的,你希望你的常规构建是快速的,否则人们不会太乐意经常运行它们。所以回到那个地方去。让您的常规测试快速运行,并使用持续集成服务器来运行更完整的构建。
2将集成测试转换为单元测试 如果单元测试的规模小于集成测试套件,那么就有问题了。这意味着矛盾将更容易出现。因此,从这里开始创建更多的单元测试来取代集成测试。在此过程中,您可以采取以下措施:
一旦有了合适的单元测试来替换集成测试,就删除集成测试。重复测试只会让维护变得更糟。 三。不要使用固定装置
4添加检查以阻止单元测试成为集成测试 现在您已经有了更快的测试,是时候检查一下以防止这种情况再次发生了。 有些库在尝试访问数据库(UnitRecord)时会抛出错误。 您还可以尝试配对和TDD,这可以帮助您的团队编写更快的测试,因为:
5使用其他库来解决这个问题 有人提到spork(加速rails3下测试套件的加载时间)、hydra/parallel\u测试—并行运行单元测试(跨多个核心)。 这应该是最后一个。你真正的问题就在第一、二、三步。解决了这个问题,您就可以更好地发挥额外基础设施的作用。 |
![]() |
2
16
要获得一本关于提高测试套件性能的好食谱,请查看 Grease Your Suite 他利用以下技术记录了测试套件运行时的45倍加速: |
![]() |
3
5
你可以用Spork。它支持2.3.x, https://github.com/sporkrb/spork 或./script/spec\u服务器,可能适用于2.x 您还可以编辑数据库配置(这实际上加快了数据库查询等),这也将提高测试的性能。 |
![]() |
4
3
每个例子10秒似乎是一个很长的时间。我从来没有见过一个规格,需要超过一秒钟,大多数采取少得多。你在测试网络连接吗?数据库写入?文件系统写入? 尽量使用mock和stub-它们是 比编写命中数据库的代码要快。不幸的是,嘲笑和存根也需要更多的时间来编写(而且更难正确地完成)。你必须平衡花费在编写测试和运行测试上的时间。 我是第二个 Andrew Grimm |
![]() |
5
2
如果您使用的是ActiveRecord模型,那么还应该考虑BCrypt加密的成本。 您可以在以下博客文章中了解更多信息: http://blog.syncopelabs.co.uk/2012/12/speed-up-rspec-test.html |
![]() |
6
0
除此之外,你唯一的方法就是(像你做的那样)分析和优化,或者使用spork或者其他可以为你并行运行你的规范的东西。 http://ruby-toolbox.com/categories/distributed_testing.html |
![]() |
7
-5
|
![]() |
cluster1 · 采取独立的新行动的好处是什么? 7 月前 |
![]() |
Robert · 使用JSON或哈希时,将NULL替换为NIL 7 月前 |
![]() |
lucycoco · 如何解决pod安装问题并成功运行pod安装? 11 月前 |
![]() |
Vessel · Ruby-包含任意数量元素的所有排列 11 月前 |