首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CakePHP UnitTest太长~ 37分钟

CakePHP UnitTest太长~ 37分钟
EN

Stack Overflow用户
提问于 2014-01-31 12:32:20
回答 2查看 219关注 0票数 0

我正在处理一个CakePHP项目。最近,我将UnitTests添加到项目中。我的系统配置是:

  • PHPUnit 3.7.24.
  • 蛋糕Versio 2.4.2
  • 带有4核Intel(R) Xeon(R) CPU E5-2609 v2 @ 2.50GHz的VM服务器
  • 9.1RC3 FreeBSD。

但我的一项测试运行得很慢。它需要37分钟才能完成。在这个测试中,我使用了10个夹具,但是我没有从另一个数据库中加载它们,因此,我的治具类只包含以下一行:

代码语言:javascript
复制
public $import = array('model' => 'Model', 'records' => false);

测试包含三个testAction()-calls。其中两个运行得很快,第三个没有运行。第三个调用运行一个控制器操作,执行以下操作:

  • 在具有~2项的表上运行两个查找查询
  • 使用ifconfig获取webvserver
  • 每个ssh连接到另一个vm (使用phpseclib)
  • 将带有scp的3,6MB文件从webserver复制到vm
  • 运行python脚本
  • 将它的json输出复制回the服务器
  • 将json信息保存在the服务器的数据库中(< 40表条目)
  • 删除vm上的python脚本结果

当我通过点击网页界面中的图标来运行相同的控制器动作时,它会在<1mniutte之后完成。但是,正如我告诉过的,在单元测试中每一个testAction()运行它需要37分钟。

  • 我已经尝试过设置配置::write(‘debug’,0);,没有任何效果。
  • 我在控制台中按照“蛋糕测试”命令运行测试,没有任何性能提升。
  • 我尽可能地减少了模型->递归来获取所有的信息

知道怎么系这个UnitTest吗?我的另一个UnitTests只需要<1分钟。

EN

回答 2

Stack Overflow用户

发布于 2014-01-31 16:43:06

您需要在日志文件中分析测试中的每个操作,以便知道问题所在。

使用PHP的microtime()函数精确地测量事物。

此外,使用日志文件监视正在发生的事情并获得操作开销的粗略估计也是一个很好的实践。这样的日志文件将立即显示瓶颈所在.

因此,我建议您设置日志记录,如果需要精确的计时,请使用microtime()函数。

票数 1
EN

Stack Overflow用户

发布于 2014-02-13 14:12:35

这是而不是单元测试。您正在测试网络连接、bash (或其他什么)解释程序和数据库。UnitTest 必须只测试一个代码的单元--通常是类。您不能使用网络或数据库。如果您测试动作类的顺序,则应该使用模拟对象和方法类的期望。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21480178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档