【问题标题】:How can I speedup the unittests for CakePHP如何加快 CakePHP 的单元测试
【发布时间】:2013-12-11 08:30:56
【问题描述】:

我正在使用 CakePHP 2.4.3 进行开发,并且经常使用 Unittest。目前主要在模型上。

是否有可能缩短这些测试需要运行的时间?是什么让他们这么慢?灯具的 db 插入?

我注意到我没有耐心等待测试运行,在等待期间我开始做其他事情,然后当我回来时,我忘记了我正在测试的问题。

感谢任何提示!

灾难简

【问题讨论】:

  • 单元测试不应该是“快速的”,它们应该证明某些东西有效。无需加快 IMO 测试。或者至少可以以更有意义和更有用的方式花费时间。
  • 您可以过滤运行的测试。所以大多数时候,你可能只运行一个类的 1 到 5 个单项测试。然后定期运行所有这些。

标签: performance unit-testing cakephp cakephp-2.4


【解决方案1】:

我在这里强烈反对标记评论:

单元测试不应该是“快速的”

从技术上讲,它们并非如此,但它可能会变得烦人。如果您在大型项目中使用 CI,测试可能会变得非常缓慢。您不想等待 30 分钟,直到所有测试完成。我们在一个有大约 550 个表的项目中遇到了这种情况。

瓶颈实际上是夹具加载。因为每次测试都必须一遍又一遍地创建所有夹具。速度很慢。

我们使用内部插件将测试数据库模板复制到测试数据库,而不是使用夹具。这将运行该项目测试的时间从 30 多分钟缩短到几分钟。

https://github.com/lorenzo/cakephp-fixturize 也应该能够做到这一点的开源插件。您可以从 SQL 文件加载夹具,也可以从模板数据库加载它们,see this section of the readme.md

如果您只需要测试一个方法而无需运行所有测试,您可以过滤测试:

cake test <file> --filter testMyMethod

【讨论】:

  • 谢谢 burzum!我将对此进行调查并在此处提供反馈。我同意你的观点,因为我认为 TDD 是一种试用。而且测试的持续时间真的是一个杀手。
  • 将我的答案标记为正确也很好,谢谢。
  • 很棒的答案,@burzum。我现在也在使用fixturize。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-11-17
  • 1970-01-01
  • 1970-01-01
  • 2010-12-26
  • 1970-01-01
  • 1970-01-01
  • 2010-12-21
相关资源
最近更新 更多