2010-07-23 26 views
0

Je reçois l'erreur suivante lorsque je tente de lancer PHPUnit à partir de mon application actuelle de framework MVCTraiter avec le chemin de PHPUnit émet

Fatal error: Cannot redeclare class PHPUnit_Util_FilterIterator in /usr/local/pear/PHPUnit/Util/FilterIterator.php on line 162 

J'ai réussi à tracer cette erreur à une combinaison de quelques choses.

$paths = array(); 
$paths[] = '../m'; 
$paths[] = '../v'; 
$paths[] = '../c'; 
$paths[] = '/usr/local/pear'; 
set_include_path(implode(PATH_SEPARATOR, $paths)); 

Quand je commente sur

set_include_path(implode(PATH_SEPARATOR, $paths)); 

exécute des tests PHPUnit

quand je en commentaire

$paths[] = '/usr/local/pear'; 

Je reçois

Fatal error: require_once(): Failed opening required 'PHPUnit/Framework/TestCase.php' 

Si je commenter tous les répertoire, sauf pour le

$paths[] = '/usr/local/pear'; 

Je reçois l'erreur « ne peut pas redéclarer ». La seule façon d'exécuter tests réels est de savoir si je cours sans l'instruction set_include_path et d'inclure manuellement tous les fichiers de classe qui sont appelés par un test unitaire individuel.

Des idées?

EDIT: Il semble qu'il y ait un conflit avec la fonction __autoload. Je ne suis toujours pas sûr de savoir comment résoudre le problème.

Répondre

0

bien qu'il se trouve, je ne sais pas pourquoi cela fonctionne réellement ... mais comme il le fait, je vais poster le résultat.

$paths[] = get_include_path(); 
$paths[] = '../m'; 
$paths[] = '../v'; 
$paths[] = '../c'; 
set_include_path(implode(PATH_SEPARATOR, $paths)); 

Alors voilà. Eh bien au moins, là vous allez dans le cas où vous avez effectivement ce problème aussi :)

+0

Cela devine cela fonctionne parce que le chemin d'accès aux fichiers phpunit est dans votre chemin d'inclusion et ma fusion et ne pas écraser l'ancien chemin d'inclusion php est capable de trouver les fichiers :) (Et ce chemin est peut-être défini au moment de l'exécution ou différent de/usr/local/pear à cause de 2 installations ou quelque chose :)) – edorian