2010-07-23 5 views
0

Я получаю следующее сообщение об ошибке при попытке запуска PHPUnit из моего текущего MVC Framework приложенияРаботы с путем PHPUnit вопросы

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

мне удалось проследить, что ошибка в комбинацию нескольких вещей.

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

Когда я закомментировать

set_include_path(implode(PATH_SEPARATOR, $paths)); 

PHPUnit запускает тесты

когда я закомментировать

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

Я получаю

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

Если я закомментировать любой другой каталог, за исключением

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

я получаю «не может переобъявить» ошибка.

Единственный способ, которым я могу воспользоваться для запуска Фактические тесты - это если я запускаю без оператора set_include_path и вручную включаю все файлы классов, вызываемые любым отдельным модульным тестом.

Любые идеи?

EDIT: похоже, что существует конфликт с функцией __autoload. Я все еще не совсем уверен, как решить эту проблему.

ответ

0

ну, как оказалось, я понятия не имею, почему это действительно работает ... но так как это так, я опубликую результат.

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

Итак, вы идете. Ну, по крайней мере, вы поедете в том случае, если у вас действительно есть эта проблема :)

+0

Угадайте, это работает, потому что путь к файлам phpunit находится в вашем пути включения, и мое слияние и не переписывание старого пути include php способен находить файлы :) (И этот путь, возможно, установлен во время выполнения или отличается от/usr/local/pear из-за 2-х установок или чего-то :)) – edorian