2013-04-08 72 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