Muszę przetestować dużą witrynę napisaną w ZF2. Jest 443 test i około 10000 asercji. Testowanie z pokryciem kodu trwa 6 godzin! Myślę, że znalazłem problem: W testach kontrolera używam metody wysyłki z AbstractHttpControllerTestCase. Czas realizacji metody wysyłki wzrasta po każdym teście (od ułamków sekund do dziesiątek sekund).PHP ZF2 Unit Testy metoda wysyłki bardzo powolna
Używam ZF 2.1.3, PHPUnit 3.7, PHP_CodeCoverage 1.2, Xdebug v2.2.1, PHP 5.4.7.
Moja metoda wysyłkowy:
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();
}
rodzic :: dispatch jest metoda z AbstractHttpControllerTestCase.
Przykładowy test:
$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);
Proszę o pomoc. Dzięki.
Aktualizacja:
używam izolacji i badań wykonanych w ciągu około 15 minut (bez pokrycia kodu) proces, ale mam błąd w teście, które są oznaczone jako pominięty:
PHPUnit_Framework_Exception: PHP Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed' in -:44
Czy próbowałeś przeprowadzić każdy test w izolacji? Natomiast 'dispatch()' znajduje się w ['AbstractControllerTestCase'] (https://github.com/zendframework/Component_ZendTest/blob/master/PHPUnit/Controller/AbstractControllerTestCase.php # L239) ('Zend \ Test \ PHPUnit \ Controller') – hakre
To działa! Znacznie szybciej, około 15 minut, ale dostaję błąd w teście, który jest pomijany: – Kudlaty
PHPUnit_Framework_Exception: PHP Błąd krytyczny: nieprzechwycony wyjątek "Wyjątek" z komunikatem "Serializacja" zamknięcia "jest niedozwolony" in:: 44 Ślad stosu: # 0 - (44): serialize (Array) # 1 - (348): __phpunit_run_isolated_test() # 2 {główny} – Kudlaty