2015-10-12 112 views
1

我有一個項目的這種結構:PHPUnit的作曲家找不到文件

 
root 
    -lib 
     -dir 
      -file1 (namespace PROJECT\dir\) 
      -file2 
    -tests 
     -dir 
      -file1Test 
      -file2Test (namespace PROJECT\tests) 
    -vendor 

Composer.json如下:

"require-dev":{ 
    "phpunit/phpunit": "5.0.*" 
}, 
"autoload":{ 
"psr-4":{ 
    "PROJECT\\": "lib/" 
    } 
} 

如果我不使用來自LIB類運行測試,一切正常。但是,(例如)如果我有

file1Test.php

use PROJECT\dir\file1; 

function void testMethod(){ 
$var = new file1();} 

我得到這個:

Class PROJECT\dir\file1 not found in full/path/to/file1Test.php 

有誰知道在哪裏的問題可能是什麼?

+0

您的PHPUnit引導過程是什麼樣子的?測試運行時,您是否需要PHPUnit的composer自動加載器? –

+0

有幾種方法可以實現:http://stackoverflow.com/a/15711324/541091 –

+0

'function void testMethod(){'不是有效的PHP,擺脫'void' –

回答

1

您可能需要將phpunit.xml添加到您的根目錄中,並附帶以下內容。

<phpunit bootstrap="vendor/autoload.php"> 
</phpunit> 

這將加載由作曲者加載的所有類。

+0

添加此文件後,我不幸遇到了同樣的錯誤。 – XWizard

+0

我會嘗試駱駝案件的命名。項目\ LIB \文件1。你的命名並不是真正的標準。有關作曲家使用的文件命名標準,請參閱PSR-1。 PSR-4是其更簡單的後繼者。 –