Ho bisogno di testare un grande sito scritto in ZF2. C'è 443 test e circa 10000 asserzioni. Il test con la copertura del codice richiede 6 ore! Penso di aver trovato il problema: nei test del controller, utilizzo un metodo di invio da AbstractHttpControllerTestCase. Il tempo di esecuzione del metodo di spedizione aumenta dopo ogni test (da frazioni di secondo a decine di secondi).PHP ZF2 Test dell'unità metodo di invio molto lento
Uso ZF 2.1.3, PHPUnit 3.7, PHP_CodeCoverage 1.2, Xdebug v2.2.1, PHP 5.4.7.
mio metodo la spedizione:
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 :: la spedizione è il metodo da AbstractHttpControllerTestCase.
Campione di prova:
$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);
prega di aiuto. Grazie.
Aggiornamento:
Io uso l'isolamento e test effettuati in circa 15 minuti (senza copertura del codice) processo, ma ottengo l'errore nel test che sono contrassegnati come saltato:
PHPUnit_Framework_Exception: PHP Fatal error: Uncaught exception 'Exception' with message 'Serialization of 'Closure' is not allowed' in -:44
Hai provato a eseguire ogni test separatamente? E 'dispatch()' è in ['AbstractControllerTestCase'] (https://github.com/zendframework/Component_ZendTest/blob/master/PHPUnit/Controller/AbstractControllerTestCase.php # L239) ('Zend \ Test \ PHPUnit \ Controller') – hakre
Funziona! Molto più veloce, circa 15 minuti, ma ottengo errori nel test che vengono saltati: – Kudlaty
PHPUnit_Framework_Exception: PHP Errore irreversibile: eccezione non rilevata 'Eccezione' con messaggio 'Serializzazione di' Chiusura 'non consentita' in -: 44 Traccia stack: # 0 - (44): serialize (matrice) # 1 - (348): __phpunit_run_isolated_test() # 2 {main} – Kudlaty