J'essaie de faire en sorte que PHPUnit fonctionne sur mon environnement de développement, mais je me suis heurté à un obstacle pour inclure PHPUnit dans mes scripts. Je sais que je dois définir le chemin d'inclusion sur PHP, mais chaque combinaison que j'ai essayée échoue sans que le compilateur ne voie la classe PHPUnit_Framework_TestCase.
Je viens d'exécuter des mises à jour sur PHP et PEAR et PHPUnit est installé sur l'ordinateur car je peux y accéder via la ligne de commande.
PHPUnit est installé dans/usr/share/php/PHPunit
Pear est à/usr/share/php/PEAR
Y a-t-il quelque chose qui me manque? C'est la première fois que j'essaie d'utiliser PHPUnit ou même quelque chose de PEAR. Je suis sur Ubuntu 10.10. Toute aide serait appréciée.
Edit - Il n'y a rien dans le chemin d'inclusion dans mon PHP ini. En ce moment le code est juste
<?php
class Stacktest extends PHPUnit_Framework_TestCase
{
}
Je n'ai aucune idée de ce qu'il faut inclure ou de ce qu'il faut définir dans le chemin d'inclusion, car il semble que, pour toutes les informations sur le Web concernant PHPUnit, ce petit morceau d'informations est absolument absent.
Si vous avez correctement installé phpunit (via PEAR), vous n'avez pas besoin d'un fichier include. il vous suffit de changer la façon dont vous l'utilisez pour tester les fichiers php (par exemple, vous l'utilisez pour tester si le fichier a fonctionné en accédant au type de navigateur localhost). Avec phpunit, vous pouvez utiliser la ligne de commande; chapitre 5 donne le même exemple en utilisant la ligne de commande (je suppose que c'est un standard). Donc, si vous l'avez installé correctement, vous pouvez faire ceci:
Fichier ExampleTest.php, situé à la racine de localhost (pour moi, il s'agit de/var/www):
class ExampleTest extends PHPUnit_Framework_TestCase
{
public function testOne()
{
$this->assertTrue(FALSE);
}
}
Ouvrez une console (terminal sous Mac ou Linux, commande Invite sous Win), accédez à la racine de votre document localhost (où vous avez enregistré ExampleTest.php) et tapez ce qui suit:
phpunit --verbose ExampleTest.php
Tu devrais voir:
PHPUnit 3.4.13 by Sebastian Bergmann.
F
Time: 1 second, Memory: 6.50Mb
There was 1 failure:
1) ExampleTest::testOne
Failed asserting that <boolean:false> is true.
/var/www/ExampleTest.php:6
FAILURES!
Tests: 1, Assertions: 1, Failures: 1.
Notes: Tout ce qui précède suppose que vous avez correctement installé phpunit (comme indiqué dans chapitre 3 ) et que vous avez redémarré Apache par la suite.
si vous voulez vraiment exécuter des tests dans votre navigateur, utilisez le code suivant
# error reporting
ini_set('display_errors',1);
error_reporting(E_ALL|E_STRICT);
# include TestRunner
require_once 'PHPUnit/TextUI/TestRunner.php';
# our test class
class ExampleTest extends PHPUnit_Framework_TestCase
{
public function testOne()
{
$this->assertTrue(FALSE);
}
}
# run the test
$suite = new PHPUnit_Framework_TestSuite('ExampleTest');
PHPUnit_TextUI_TestRunner::run($suite);
Modifier
Je viens de repérer Ubuntu 10.10 dans votre question. Pour installer Ubuntu, je recommande ceci: dans le terminal, faites:
Sudo pear uninstall phpunit/PHPUnit
Sudo apt-get install phpunit
Sudo /etc/init.d/Apache2 restart
Note: N'émettez pas la première ligne si vous n'avez pas installé phpunit via pear. La dernière ligne semble être nécessaire (dans mon cas du moins).
Sudo /etc/init.d/Apache2 reload # Or
Sudo service Apache2 restart
A partir de PHPUnit 3.5, vous devez inclure l'autochargeur vous-même:
require 'PHPUnit/Autoload.php'; // PEAR should be in your include_path
Ajoutez cette ligne à votre php.ini
:
include_path=".:/usr/share/php:/usr/share/pear:/usr/share/php/PHPunit:/usr/share/php/PEAR"
Enregistrez le fichier et redémarrez Apache.
Assurez-vous également que vous éditez le php.ini
correct. Essayez d'utiliser locate php.ini
pour trouver tous les endroits qu'il pourrait cacher. C'est généralement quelque part dans le répertoire /usr
.
Assurez-vous que chaque fois que vous utilisez include () ou require (), vous préfixez le nom de fichier actuel avec dirname(__FILE__)
. Cela garantit que le fichier que vous incluez se trouve dans le chemin que vous spécifiez, par rapport au fichier dans lequel se trouve l'inclusion. Par défaut, PHP inclut relativement au fichier appelé pour démarrer le programme.
J'ai pu le faire fonctionner en utilisant set_include_path en haut de mon script (voir l'exemple ici http://www.siteconsortium.com/h/p1.php?id=php002 ), puis j'ai également pour inclure depuis que je courais un test de sélénium, mais cela a fonctionné.
require_once ('PHPUnit/Autoload.php');
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';