2013-04-08 130 views
0

我的FW使用自动加载功能,我通过spl_autoload_register('autoload');
添加我在目录上运行phpunit。它执行的第一次测试后,系统崩溃,:phpunit自动加载冲突,phpunit自动加载get的覆盖

PHP Fatal error: require_once(): 
Failed opening required 'PHPUnit/Extensions/SeleniumTestCase.php' (include_path='.:/ ......) 
in /home/test/functions.php on line 139 

这指向 autolaod功能,而不是一个PHPUnit的是假设使用。
这是否意味着我的函数首先被使用,然后是phpunit,它在我的函数中崩溃了?

如果我更改我的autoload以使用include而不是require_once它将正常工作。所以我想这是一个自动加载功能问题的顺序。

回答

0

您应该在自动加载功能中使用include_once而不是require_once,如果找不到文件,它将避免致命。

或者,您可以通过使用

spl_autoload_register('autoload', true, true); 

给你的引导,以PHPUnit的把磁带自动加载机在SPL自动加载堆栈的结束,或许可以解决这个问题。在您的phpunit.xml

<?xml version="1.0" encoding="UTF-8"?> 
<phpunit bootstrap="bootstrap.php"> 
</phpunit> 
+0

似乎我在PHPunit的XML配置中使用的引导指令,首先放置我的'autoload'。任何想法如何运行我的bootstrap后? – 2013-04-08 17:10:25

+0

这很奇怪,因为PHPUnit应该已经加载 – epicdev 2013-04-08 17:12:36

+0

我知道,无论如何,我通过为运行测试时的特定自动加载来解决它。我用include_once,所以它可以很好地工作。 – 2013-04-08 17:27:04