2010-07-23 68 views
0

我收到以下錯誤,當我嘗試從我目前的MVC框架應用PHPUnit的路徑處理問題

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

我已經成功地跟蹤該錯誤的幾件事情的組合中運行的PHPUnit。

$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聲明和手動包括所有由任何個別單元測試調用的類文件。

任何想法?

編輯: 它似乎與__autoload函數有衝突。我仍然不確定如何解決這個問題。

回答

0

事實證明,我不知道爲什麼這實際上可行......但既然它確實,我會發布結果。

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

所以你去了。至少,在這種情況下,你真的有這個問題:)

+0

它猜測它的工作原理是因爲phpunit文件的路徑在你的包含路徑和我的合併,而不是覆蓋舊的包含路徑PHP是能夠找到文件:)(並且該路徑可能設置在運行時或不同於/ usr/local /梨,因爲2安裝或某事:)) – edorian 2010-08-17 16:21:09