Подтвердить что ты не робот

Получение PHPUnit Working - Include Path установлен неправильно?

Я пытаюсь заставить 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 эта небольшая часть информации критически отсутствует.

4b9b3361

Ответ 1

Если вы правильно установили 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

Ответ 2

Начиная с PHPUnit 3.5, вы должны включить автозагрузчик самостоятельно:

require 'PHPUnit/Autoload.php'; // PEAR should be in your include_path

Ответ 3

Добавьте эту строку в свой 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.

Ответ 4

Убедитесь, что каждый раз, когда вы используете include() или require(), вы префиксное имя файла dirname(__FILE__). Это гарантирует, что файл, который вы включаете, находится по пути, указанному вами по отношению к фактическому файлу, в котором находится объект include. По умолчанию, PHP включает в себя относительно файла, который вызывается для запуска программы.

Ответ 5

Мне удалось заставить его работать с помощью set_include_path в верхней части моего script (см. пример здесь http://www.siteconsortium.com/h/p1.php?id=php002) и то я также должен был включить, поскольку я запускал тест Selenium, но он работал.

require_once ('PHPUnit/Autoload.php');
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';