phpunit自动加载冲突,phpunit自动加载获取';它凌驾于
我的FW使用自动加载功能,我通过phpunit自动加载冲突,phpunit自动加载获取';它凌驾于,php,phpunit,autoload,Php,Phpunit,Autoload,我的FW使用自动加载功能,我通过spl_autoload_寄存器(“autoload”)添加该功能 我在一个目录上运行phpunit。执行第一次测试后,系统崩溃,原因如下: PHP Fatal error: require_once(): Failed opening required 'PHPUnit/Extensions/SeleniumTestCase.php' (include_path='.:/ ......) in /home/test/functions.php on line
spl_autoload_寄存器(“autoload”)添加该功能代码>
我在一个目录上运行phpunit。执行第一次测试后,系统崩溃,原因如下:
PHP Fatal error: require_once():
Failed opening required 'PHPUnit/Extensions/SeleniumTestCase.php' (include_path='.:/ ......)
in /home/test/functions.php on line 139
这指向myautolaod函数,而不是phpunit应该使用的函数。
这是否意味着我的函数先被使用,然后是phpunit函数,它在我的函数中崩溃了
如果我将我的autoload
更改为使用include
而不是require\u一次
它将正常工作。因此,我想这是自动加载函数的顺序问题。在自动加载函数中,您应该使用包含_once
而不是要求_once
,如果找不到文件,将避免致命
或者,您可以使用将自动加载器放在SPL自动加载器堆栈的末尾
spl_autoload_register('autoload', true, true);
将引导程序交给phpunit可能会解决这个问题。在您的phpunit.xml中
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="bootstrap.php">
</phpunit>
似乎是我在PHPunit的XML配置中使用的引导指令,将我的自动加载放在第一位。知道之后如何运行我的引导程序吗?我知道,无论如何,我解决了这个问题,只在运行测试时使用了一个特定的自动加载。我使用了include_一次,这样就可以很好地工作。spl_autoload_register的第三个参数,如果为true,将根据php文档将其前置到自动加载堆栈(即将其放在开头,而不是结尾)。