Affrontare i problemi di Phpunit Path
-
28-09-2020 - |
Domanda
Sto ottenendo il seguente errore quando provo a eseguire PhpUnit dall'interno della mia attuale applicazione MVC Framework
Fatal error: Cannot redeclare class PHPUnit_Util_FilterIterator in /usr/local/pear/PHPUnit/Util/FilterIterator.php on line 162
.
Sono riuscito a rintracciare quell'errore a una combinazione di alcune cose.
$paths = array();
$paths[] = '../m';
$paths[] = '../v';
$paths[] = '../c';
$paths[] = '/usr/local/pear';
set_include_path(implode(PATH_SEPARATOR, $paths));
.
Quando commento
set_include_path(implode(PATH_SEPARATOR, $paths));
.
PhpUnit esegue Tests
Quando commento
$paths[] = '/usr/local/pear';
.
ottengo
Fatal error: require_once(): Failed opening required 'PHPUnit/Framework/TestCase.php'
.
Se commento ogni altra directory, salvo per
$paths[] = '/usr/local/pear';
.
Ottengo l'errore "Impossibile Redeclare".
L'unico modo in cui posso arrivare a eseguire effettivi test è se eseguito senza l'istruzione Set_include_path e includendo manualmente tutti i file di classe che vengono chiamati da qualsiasi singolo test unitario.
Qualche idea?
Modifica: Sembra che ci sia un conflitto con la funzione __autoload.Non sono ancora sicuro di come affrontare il problema.
Soluzione
Beh come risulta, non ho idea del perché funzioni in realtà ... ma dal momento che lo fa, posterò il risultato.
$paths[] = get_include_path();
$paths[] = '../m';
$paths[] = '../v';
$paths[] = '../c';
set_include_path(implode(PATH_SEPARATOR, $paths));
.
Quindi ci sei.Bene, almeno, ci vai nel caso in cui hai effettivamente avuto questo problema :)