我正在使用CakePHP 2.4.3进行开发并使用Unittest。目前主要是模特。
是否有可能缩短这些测试需要运行的时间?是什么让他们这么慢?夹具的db插入?
我注意到我没有耐心等待测试运行,等待我开始做其他事情,然后当我回来时,我忘记了我正在测试的问题。
感谢任何提示!
CalamityJane
答案 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