【发布时间】: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。