3

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

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

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

感谢您的任何提示!

灾难简

4

1 回答 1

9

我强烈不同意标记评论:

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

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

瓶颈实际上是夹具加载。因为对于每个测试,所有的夹具都必须一遍又一遍地创建。它很慢。

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

一个也应该能够做到这一点的开源插件是https://github.com/lorenzo/cakephp-fixturize。您可以从 SQL 文件加载夹具或从模板数据库加载它们,请参阅 readme.md 的这一部分

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

cake test <file> --filter testMyMethod
于 2013-12-11T11:50:51.043 回答