【问题标题】:Dealing with PHPUnit path issues处理 PHPUnit 路径问题
【发布时间】:2010-07-23 14:14:31
【问题描述】:

当我尝试从当前 MVC 框架应用程序中运行 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 语句的情况下运行并手动包含任何单个单元测试调用的所有类文件。

有什么想法吗?

编辑: 似乎与 __autoload 函数有冲突。我仍然不太确定如何解决这个问题。

【问题讨论】:

    标签: unit-testing installation phpunit autoload set-include-path


    【解决方案1】:

    事实证明,我不知道为什么这确实有效……但既然有效,我会发布结果。

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

    所以你去。好吧,至少,如果你实际上也遇到了这个问题,那就去吧:)

    【讨论】:

    • 它猜测它可以工作,因为 phpunit 文件的路径在您的包含路径中,并且我的合并而不是覆盖旧的包含路径 php 能够找到文件:)(并且该路径可能已设置在运行时或与 /usr/local/pear 不同,因为 2 次安装或其他原因 :) )
    猜你喜欢
    • 2010-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-07
    • 1970-01-01
    相关资源
    最近更新 更多