2015-01-04 20 views
0

我有幾個測試文件,其他人將繼承自一個文件。phpunit說我有雙重定義的類

這是父文件:

<?php 

namespace Initial\Reports\Tests; 

use Illuminate\Database\Eloquent\Model; 
use Initial\Reports\DataFetcher; 

const DONT_CARE = true; 

class ReportTest extends \TestCase { 

} 

和所有其他的測試從上面的文件

他們都坐在同一個文件夾繼承。

,當我運行

phpunit path/to/folder/ 

我得到

PHP Fatal error: Cannot redeclare class Initial\Reports\Tests\ReportTest in /Users/tzookb/Sites/lps.core/app/initial/Reports/tests/ReportTest.php 
+0

「path/to/folder」或「Initial \ Reports \ Tests」命名空間中的某處必須是另一個名爲ReportTest的類。重命名一個。 – Bjorn 2015-01-04 12:55:08

回答

0

這是因爲我的測試父命名的:

ReportTest 

所以PHPUnit的把它讀成另一個測試類。

我改成了

ReportTestCase 

比的PHPUnit沒有找到它作爲測試,和所有偉大的工作。

0

聽起來你正在做的不止一個include包含類的文件。一個include導致PHP的行爲就好像包含文件的內容在include語句所在的位置處被簡單鍵入一樣。不止一次地這樣做,你會有兩個階級的定義。

您應該使用(1)an autoloader function(請參閱PSR-4)或(2)使用require而不是include

另一種可能性,當然是,你確實有兩個類的定義,在這種情況下,你需要重命名一個。