我正在尝试加速测试,到目前为止已经做了一些事情,比如删除不必要的数据库写入(使用new而不是create,不使用factorygirl,更少的功能测试,组合测试),当我单独运行文件时,我得到了一个减少时间。
然而,当我运行整个测试套件时,我最终会得到大致相同的时间,有时我甚至会在改进的测试中获得更慢的运行时间。
有任何方法可以准确衡量吗?
答案 0 :(得分:4)
使用FactoryGirl更换新的而不是创建将婴儿扔出洗澡水。如果你不需要持久化对象,你可以使用FactoryGirl的build或build_stubbed,你可以在保持参数默认等的同时节省性能。除此之外,你所做的所有性能调整确实被实际所需的时间所淹没。在浏览器中进行操作,以及资产编译(特别是在较少数量的测试中),所以你真的不会节省那么多。如果性能是您关心的,那么您最好的选择就是在单元测试中尽可能多地进行测试,然后通过应用程序将大部分功能测试限制在快乐路径中。
如果你仍然想找到最慢的测试,以确保你没有做任何事情,比如等待“不存在元素”而不是“不存在的元素”并优化它们,你可以指定{{1} } --profile
的命令行选项或RSpec配置中指定'profile_examples'https://relishapp.com/rspec/rspec-core/docs/configuration/profile-examples