Я пытаюсь заставить PHPUnit работать в моей среде разработки, но я попал в блокпост, когда речь заходит о включении PHPUnit в мои скрипты. Я знаю, что мне нужно установить путь include на PHP, но каждая попытка, которую я пробовал, не выполняется, если компилятор не видит класс PHPUnit_Framework_TestCase.
Я просто запускал обновления на PHP и PEAR, а PHPUnit установлен на компьютер, потому что я могу получить доступ к нему через командную строку просто отлично.
PHPUnit установлен в / usr / share / php / PHPunit
Груша находится в / usr / share / php / PEAR
Есть что-то, что мне не хватает? Это мой первый раз, когда я пытаюсь использовать PHPUnit или даже что-то из PEAR. Я на Ubuntu 10.10. Любая помощь будет оценена по достоинству.
Изменить – в моем включении в моем PHP-файле нет ничего. Сейчас код просто
<?php class Stacktest extends PHPUnit_Framework_TestCase { }
Я понятия не имею, что включать или что устанавливать в include-путь, потому что кажется, что для всей информации в Интернете о PHPUnit эта небольшая часть информации критически отсутствует.
Если вы правильно установили phpunit (через PEAR), тогда нет необходимости включать файл include; вам просто нужно изменить способ его использования для тестирования php-файлов (например, вы используете его, чтобы проверить, работал ли файл, перейдя в браузер типа localhost). С помощью phpunit вы можете использовать командную строку; глава 5 дает тот же пример с использованием командной строки (я бы предположил, что это стандарт). Поэтому, если вы его правильно установили, вы можете сделать это:
Файл ExampleTest.php, расположенный в корне localhost (для меня это / var / www):
class ExampleTest extends PHPUnit_Framework_TestCase { public function testOne() { $this->assertTrue(FALSE); } }
Откройте консоль (терминал в Mac или Linux, командную строку на Win), перейдите к корневому каталогу localhost (где вы сохранили ExampleTest.php) и введите следующее:
phpunit --verbose ExampleTest.php
Тебе следует увидеть:
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.
Примечания. Все вышесказанное предполагает, что вы правильно установили phpunit (как указано в главе 3 ), и после этого вы перезапустили apache.
если вы действительно хотите запустить тесты в своем браузере, используйте следующий код
# 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);
редактировать
Просто заметили Ubuntu 10.10 в вашем вопросе. Для установки Ubuntu я рекомендую это: в терминале do:
sudo pear uninstall phpunit/PHPUnit sudo apt-get install phpunit sudo /etc/init.d/apache2 restart
Примечание. Не выдавайте первую строку, если вы не установили phpunit через грушу. Последняя строка кажется необходимой (по крайней мере, в моем случае).
sudo /etc/init.d/apache2 reload # Or sudo service apache2 restart
Начиная с PHPUnit 3.5, вы должны включить автозагрузчик самостоятельно:
require 'PHPUnit/Autoload.php'; // PEAR should be in your include_path
Добавьте эту строку в свой php.ini
:
include_path=".:/usr/share/php:/usr/share/pear:/usr/share/php/PHPunit:/usr/share/php/PEAR"
Сохраните файл и перезапустите apache.
Кроме того, убедитесь, что вы редактируете правильный php.ini
. Попробуйте использовать locate php.ini
для поиска всех мест, которые он может скрывать. Обычно это находится в каталоге /usr
.
Убедитесь, что каждый раз, когда вы используете include () или require (), вы префиксное имя файла с именем dirname(__FILE__)
. Это гарантирует, что файл, который вы включаете, находится по пути, указанному вами по отношению к фактическому файлу, в котором находится объект include. По умолчанию, PHP включает в себя относительно файла, который вызывается для запуска программы.
Мне удалось заставить его работать, используя set_include_path в верхней части моего скрипта (см. Пример здесь http://www.siteconsortium.com/h/p1.php?id=php002 ), а затем я также должен был включить, так как я проводил тест Selenium, но он работал.
require_once ('PHPUnit/Autoload.php'); require_once 'PHPUnit/Extensions/SeleniumTestCase.php';