我正在处理CakePHP项目。最近我在项目中添加了UnitTests。我的系统配置是:
但我的一项测试运行速度非常慢。它需要约37分钟才能完成。我在这个测试中使用了10个灯具,但我没有从其他数据库加载记录, 因此我的Fixture类只包含这一行:
public $import = array('model' => 'Model', 'records' => false);
测试包含三个testAction() - 调用。其中两个跑得快,第三个没跑。第三个调用运行控制器操作,执行以下操作:
当我通过单击Web界面中的图标来运行相同的控制器操作时,它会在< 1毫升。但是在单元测试中按testAction()运行它 我告诉你需要大约37分钟。
知道如何固定UnitTest吗?我的其他UnitTests只采取< 1分钟。
答案 0 :(得分:1)
您需要在日志文件中对该测试中的每个操作进行概要分析,以便了解问题所在。
使用PHP的microtime()
函数精确测量事物。
使用日志文件来监控正在进行的操作以及粗略估计操作所需的数量也是一种非常好的做法。这样的日志文件会立即向您显示瓶颈所在......
因此,我建议您设置日志记录,如果需要精确计时,请使用microtime()
功能。
答案 1 :(得分:-1)
NOT 单元测试。您正在测试网络连接,bash(或其他)解释器和数据库。 UnitTest 必须只测试一个单元代码 - 通常是类。您不得使用网络或数据库。如果你测试动作类的应该采取 - 使用模拟对象和方法类的期望。