【问题标题】:Functional tests running very slow when using Factory_Girl使用 Factory_Girl 时功能测试运行非常缓慢
【发布时间】:2011-07-07 04:29:11
【问题描述】:

在我们的 Rails 项目中,我们决定取消固定装置并改用 Factory_Girl 进行测试。我们使用 TDD 进行编程,因此我们有大量的单元和功能测试(Test::Unit)。该应用程序有 23 个控制器和 14 个模型,这意味着我们有大量的测试。

当我们使用固定装置时,测试速度更快,但我们发现它们难以维护(随着我们的模型关联开始增长)。

今天,TDD 变得非常困难,因为运行我们的完整测试套件大约需要 50 秒(也许这并不多):-(

以下是最大的工厂之一。也许它有什么问题导致对象构造运行缓慢......

Factory.define :content do |c| c.sequence(:id) {|n| } c.title “别让我思考:Web 可用性的常识方法,第 2 版” c.description "平原" c.privacy “私人” c.category_id 2 c.association :owner, :factory => :user c.file_file_name "file.abc" c.file_file_size 1024 c.file_content_type “应用程序/压缩包” c.cover_file_name "1.jpg" c.cover_file_size 200 c.cover_content_type "图像/jpeg" c.created_at "2010-01-01 00:00:00" c.意见 [] c.创作者[] 结尾

任何有使用 Factory_Girl 经验的人都可以告诉我们如何减少测试时间?也许我们可以在工厂定义中改进一些东西......

谢谢!

巴勃罗。

【问题讨论】:

  • 50 秒对于完整的测试套件来说并不是很长的时间。
  • 取决于您的测试程度。如果你是 10K 测试,它真的很快。如果你是 2 测试它真的很长。你考得怎么样了?
  • Factory_girl 一直在占用。我今天对它进行了一些分析,它负责每次控制器测试 0.3 到 0.35 秒!如果您删除 Factory girl 行,则每个测试都会立即运行,并且只需要 0.0001 秒。它当然会失败,但这不是重点。 0.35 秒构建几个对象是疯狂的 - 即使对于 Ruby。

标签: ruby-on-rails factory-bot


【解决方案1】:

我们的内容工厂中有一个很长的示例描述。通过减少该字段的测试值的长度,我们将运行时间减少了近 50%。

我们也在问自己,我们在内容模型中使用acts_as_indexed 的事实是否会减慢测试套件的执行速度,因为内容是在工厂女孩创建时被编入索引的。你怎么看?

谢谢,

巴勃罗。

【讨论】:

  • 字符串字段的长度似乎不太可能影响插入(除非它是一个巨大的数量,我的意思是几兆字节)。它也可能取决于您的数据库。你用的是什么数据库?除此之外,您的acts_as_indexed 似乎是这里最有可能的罪魁祸首。
猜你喜欢
  • 1970-01-01
  • 2018-11-11
  • 1970-01-01
  • 2017-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多