ZF2で書かれた大きなサイトをテストする必要があります。443のテストと約10000のアサーションがあります。コードカバレッジを使用したテストには6時間かかります。私は問題を見つけたと思います:コントローラーのテストでは、AbstractHttpControllerTestCaseのディスパッチメソッドを使用します。ディスパッチメソッドの実行時間は、各テスト後に増加しています(数分の1秒から数十秒)。
ZF 2.1.3、PHPUnit 3.7、PHP_CodeCoverage 1.2、Xdebug v2.2.1、PHP5.4.7を使用しています。
私の派遣方法:
public function dispatch($url, $method = HttpRequest::METHOD_GET, $params = array())
{
$s = microtime(true);
parent::dispatch($url, $method, $params);
$end = microtime(true) - $s;
echo 'dis: '.$end."\n";
return $this->getApplication()->getMvcEvent()->getResult();
}
parent :: dispatchは、AbstractHttpControllerTestCaseのメソッドです。
テストのサンプル:
$result = $this->dispatch('/archive/finance/older');
$this->assertControllerName('skycontent\controller\article');
$this->assertActionName('archive');
$this->assertParamValue('older', true);
$this->assertParamValue('category', 'finance');
$vars = (array) $result->getVariables();
$this->assertArrayHasKey('archivePosts', $vars);
助けてください。ありがとう。
アップデート:
プロセス分離と約15分で実行されたテスト(コードカバレッジなし)を使用していますが、スキップとしてマークされたテストでエラーが発生します:
PHPUnit_Framework_Exception: PHP Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed' in -:44