2012-03-09 4 views
5

J'ai passé en revue par des problèmes similaires sur SO, mais en vain. Je cours PHP 5.3.6 et phpunit la version 3.6.10. Lors d'une tentative d'exécuter un test simple:PHPUnit échec ouverture fichier requis

require_once 'PHPUnit/Framework.php'; 

class UserTest extends PHPUnit_Framework_TestCase { 
} 

Je reçois l'erreur suivante:

PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Framework.php' 
(include_path='.:/Users/username/pear/share/pear:/usr/lib/php/pear/:/Users/username/pear/share/pear/PHPUnit') in ... 

Lors de la réinstallation PHPUnit, je ne sais pas si l'emplacement d'installation a été reproduit, mais il semble que lors de l'exécution which phpunit, le chemin est: /usr/bin/phpunit. Cependant, il semble également être installé dans /Users/user/pear/bin/phpunit. J'ai essayé de mettre à jour tous les canaux et de réinstaller PEAR et PHPUnit, mais le problème persiste. Je cours sur OSX Lion. Toute aide serait grandement appréciée.

+0

Vous avez fait une faute de frappe: ''PHPUit/Framework.php'' - le' n' est manquant. – hakre

+0

Avant de réinstaller PEAR, je lirais * le message d'erreur en premier. Cela vous dit ce qui n'a pas marché. Je vous l'ai également dit dans le commentaire ci-dessus. – hakre

+1

@hakre - désolé, c'était une faute de frappe en moi taper l'erreur (par opposition à copier et coller). L'erreur est que PHPUnit n'exige plus que vous exigiez explicitement la classe Framework. Je lisais d'une façon ou d'une autre une vieille documentation, et j'étais confus quant à savoir pourquoi cela ne fonctionnait pas. Merci de votre aide. – naivedeveloper

Répondre

15

Il suffit de retirer la ligne

require_once 'PHPUnit/Framework.php'; 

et tout devrait fonctionner.

Vous n'avez pas besoin de include/require quoi que ce soit PHPUnit lié depuis (au moins) PHPUnit 3.6 plus et vous ne pouvez pas inclure ce fichier car il n'existe plus dans la distribution.

Le coureur phpunit prendra soin de bootstrapping tout ce qui est nécessaire par PHPUnit :)

+2

Merci, c'est ce que je vois maintenant. D'une manière ou d'une autre, apparemment, je suis tombé sur une vieille documentation ou quelque chose sur le site PHPUnit, parce que c'était nécessaire pour ce fichier. Merci de votre aide. – naivedeveloper

+0

Hahahahaa. C'est vraiment une excellente réponse. Après avoir passé une heure à résoudre ce problème =) +1 =)) –

1

Comme d'autres l'ont souligné, Framework.php n'est plus nécessaire.

Mais dans tous les cas, si vous avez déjà écrit trop de fichiers de test et que vous avez l'instruction include, les corriger deviendra une tâche fastidieuse. Quel était le cas que j'ai dû affronter.

Si une solution de contournement rapide est nécessaire, créez un fichier Framework.php vide. Cela résoudra le problème. Créez un fichier vide nommé Framework.php dans votre répertoire PHPUnit. (par exemple: /usr/share/php/PHPUnit/Framework.php).

sudo touch /usr/share/php/PHPUnit/Framework.php