加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails 3.0.7 – >你如何让你的测试运行得更

发布时间:2020-12-16 20:32:12 所属栏目:百科 来源:网络整理
导读:我正在运行mysql,database_cleaner,Rspec等.到目前为止,我已经有大约518个测试,并且运行了88秒.这是我不能接受的,因为我的应用程序开发刚刚开始. 所以在进一步之前,我想尝试找到方法来减少运行这些测试所需的时间 – 希望无需实际更改测试. 在大多数情况下,
我正在运行mysql,database_cleaner,Rspec等.到目前为止,我已经有大约518个测试,并且运行了88秒.这是我不能接受的,因为我的应用程序开发刚刚开始.

所以在进一步之前,我想尝试找到方法来减少运行这些测试所需的时间 – 希望无需实际更改测试.

在大多数情况下,我试图使用存根.但是,当我测试模型和查询时,我使用数据库.

我认为database_cleaner正在放慢速度,但我不知道如何测试查询和没有它的东西.

使用sqlite3与“:memory:”选项似乎只能刮掉约10秒(令人失望的结果…)

我能做些什么来真正加快测试速度?

解决方法

您可以使用多种策略来加快测试时间.如果你刚刚开始,你看到一个88秒的运行时间,我会想到很多这些适用于你:

>使用spork – Spork将执行所有的引导和环境需要一次,将其保存在内存中,只重新加载测试.快速运行测试可能是一个巨大的帮助.聪明的测试 – 个人来说,我的工作流程是开发测试,运行完整的测试套件来查看失败,然后只运行新的/失败的测试,直到我能得到这些绿色.最后,当我完成我最后一次运行套件,看看我是否倒退了别的东西.清理你的宝石文件 – 大部分的Rails启动时间花在了需求上,如果你有宝石,你再也不用了,你加载时间就没有任何好处.取出你没有使用的任何东西,并考虑将东西仅用于一个或两个点在命名组中,以便您可以在执行期间手动要求它们(请注意,您正在交易请求性能的初始加载速度,对于开发人员来说是非常棒的,但是对于生产来说很糟聪明地了解什么是存根和模拟 – 如果你真的在做单元测试,例如,你应该避免触摸数据库,或者至少是你的控制器测试.想想课堂的责任究竟是什么.控制器不负责保存记录,负责告诉模型保存记录.即使模型不负责保存数据库中的东西,他们负责告诉ActiveRecord.>如果你把东西很好地保留下来,请考虑不包括Rails.您将需要将几乎所有的ActiveRecord功能都放在测试中,但是如果可以这样做,您将看到测试时间大大减少(可能超过一个数量级).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读