我知道这可能会被问到很多,但是我很长时间没有使用过PHP,而且我发现自己再一次与其路径行为进行斗争并且包括在内。
我已经按照建议通过Pear安装了PHPUnit,我将Pear目录添加到我的php.ini文件中,这样我就可以全局包含PHPUnit.php。但是,PHPUnit.php需要在它自己的目录中包含几个文件,当我在我的测试目录中引用PHPUnit.php时:
require_once 'PHPUnit.php';
它尝试将这些文件包含在相对于测试目录的文件中,或者包含在php.ini中指定的Pear目录中。
Fatal error: require_once() [function.require]: Failed opening required 'PHPUnit/TestCase.php'
(include_path='.:/home/data/pear/php') in /[snip]/domains/test.domainname.com/html/project/tests/PHPUnit.php on line 47
我记得当天用PHP处理这些问题,但我觉得我不应该修改PHPUnit包含文件的路径来使其工作......
答案 0 :(得分:1)
PHPUnit使用典型的类名来路径转换自动加载器,用类目录分隔符替换类名中的下划线。
因此,在您的代码中,您引用了PHPUnit_TestCase,它自动尝试在PHPUnit目录中包含TestCase.php文件,但该文件/类不存在。
正如KingCrunch在评论中所说,要使用的类是PHPUnit_Framework_TestCase
如果查看PHPUnit目录,则有一个包含TestCase.php的Framework目录
<?php
class StackTest extends PHPUnit_Framework_TestCase
{