我试图将一个测试类封装在一个预先存在的PHP类文件中,该文件不符合任何PSR标准。
我尝试测试的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_one行时,它确实有效。
我不明白为什么会失败,但我正在抓住救命稻草。谢谢
问题源于以下几点:
- PHP.ini配置不正确(没有引发错误消息),但更重要的是:
-
服务器变量设置错误;我最终修改了phpunit.xml配置文件,使其包含:
由于测试是通过CLI执行的,因此这些服务器变量不可用,因此需要进行设置。当phpunit遇到这个错误时,NetBeans不知道如何在输出窗口中报告它,因为本地INI配置没有设置为这样做