2013-04-20 51 views
1

下面是其中的文件所在的路徑,實體類沒有找到PHPUnit的測試

src\TW\Talk\Entity\Talk.php 
src\Tests\Talk\Entity\TalkTest.php 
src\phpunit.xml.dist 

在TalkTest.php,我已經包括PHPUnit的與實體論。

require_once 'TW/Talk/Entity/Talk.php'; 
require('PHPUnit/Autoload.php'); 

Class TalkTest extends PHPUnit_Framework_TestCase 
{ 
    ... 
} 

在phpunit.xml.dist文件,我有,

<phpunit> 
    <testsuites> 
    <testsuite name="TW"> 
     <file>Tests/Talk/Entity/TalkTest.php</file> 
    </testsuite> 
    </testsuites> 
</phpunit> 

我從src目錄下運行PHPUnit的命令,我得到錯誤Fatel錯誤:類「測試\ TW \通話\ Enity \ Talk'找不到。

僅供參考,我指的是具有相似結構的php-object-freezer-master。

任何想法爲什麼TalkTest無法找到Talk類?

phpunit命令試圖在Tests文件夾中找到Talk實體。

回答

1

更改phpunit.xml.dist到

<phpunit bootstrap="loader.php"> 
    <testsuites> 
    <testsuite name="TW_Talk"> 
     <directory>Tests</directory> 
    </testsuite> 
    </testsuites> 
</phpunit> 

和裝載文件,

<?php 

function tw_test_autoloader($class) { 
    if(file_exists(__DIR__."\\" . $class . ".php")) 
     require_once(__DIR__."\\" . $class . ".php"); 
} 

spl_autoload_register('tw_test_autoloader'); 

爲我工作。

但還是如果我更換目錄標記到文件

<file>Tests\TW\Talk\Entity\TalkTest.php</file> 

它不工作。

0

檢查的include_path:

echo get_include_path(); 

它應該包含目錄到您的TW/Talk/Entity/Talk.php是相對的。如果不存在,那麼您必須將其添加到php.ini或PHPUnit的引導程序。

您可以輕鬆地測試PHP是否能使用包括與此路徑查找文件:

var_dump(stream_resolve_include_path('TW/Talk/Entity/Talk.php')); 
+0

phpunit命令正試圖在Tests文件夾下找到實體。我添加了「使用TW \ Talk \ Entity \ Talk;」它應該在測試文件夾下尋找實體 – vishal 2013-04-21 11:51:42