PHPUnit使用require_once和$ SERVER变量在Object Constructor上神秘失败

时间:2015-03-04 18:44:00

标签: php netbeans phpunit

我正在尝试将一个测试类包装在一个不符合任何PSR标准的预先存在的PHP类文件中。

我正在尝试测试的PHP对象有一个接受1个参数的构造函数。

在setUp中准备我的对象时,我的测试正确失败,因为缺少构造函数参数。因此,我觉得我的对象正确解决了。

protected function setUp() {
    $this->object = new HierarchyChange();
}

但是,当我添加一个值时:

$this->object = new HierarchyChange('username');

当我运行测试时,NetBeans会抛出“可能发生错误,在”输出窗口中验证“消息。输出窗口没有信息。

从命令行执行“phpunit。-v”只输出我正在使用的PHPUnit版本,但不显示任何异常信息。

我在类构造函数中将HierarchyChange类中的失败行跟踪到此行:

public function __construct($agent_manager)
    {

        /* require contracting base class */
        require_once($_SERVER['DOCUMENT_ROOT'] . '/_inc/oc.class.php');

我尝试了多种不同的方法来添加此文件,认为服务器变量导致了问题,但即使删除它并在构造函数中对路径进行硬编码也会导致测试套件崩溃。

但是,当我完全注释掉require_once行时,它会起作用。

对我来说,为什么这会失败是没有意义的,但我正在抓住稻草。感谢。

1 个答案:

答案 0 :(得分:1)

问题源于一些事情:

  1. PHP.ini配置不正确(未提出错误消息),但更重要的是:
  2. 错误地设置服务器变量;我最终修改了phpunit.xml配置文件以包含:

         

  3. 由于测试是通过CLI执行的,因此这些服务器变量不可用,因此需要进行设置。当phpunit遇到这个错误时,NetBeans不知道如何在输出窗口中报告它,因为本地INI配置没有设置为这样做。