如何加快CakePHP的单元测试速度

时间:2013-12-11 08:30:56

标签: performance unit-testing cakephp cakephp-2.4

我正在使用CakePHP 2.4.3进行开发并使用Unittest。目前主要是模特。

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

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

感谢任何提示!

CalamityJane

1 个答案:

答案 0 :(得分:9)

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

  

单位测试不应该是“快速”

从技术上讲,这不是真的,但它可能会变得烦人。如果在大型项目上使用CI,测试可能会变得非常慢。在完成所有测试之前,您不想等待30分钟。我们在一个包含~550个表的项目中有这个案例。

瓶颈实际上是夹具装载。因为每次测试都必须反复创建所有夹具。这很慢。

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

应该能够执行此操作的开源插件是https://github.com/lorenzo/cakephp-fixturize。您可以从SQL文件加载fixture,也可以从模板数据库加载它们,see this section of the readme.md

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

cake test <file> --filter testMyMethod