2013-01-05 55 views
1

我想使用PHPUnit來測試我的Symfony 2應用程序。我說PHPUnit來我的Symfony 2項目composer.json文件作爲documentation描述:使用PHPUnit作爲Symfony 2依賴項

"require": { 
     ... 
     "phpunit/phpunit": "3.7.*" 
    }, 

我怎麼能說現在的PHPUnit運行測試?我試圖通過

$ php /path/to/symfony2app/vendor/phpunit/phpunit.php 

運行它,但我得到了以下錯誤消息:

Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in C:\...\vendor\phpunit\phpunit\PHPUnit\Autoload.php on line 45 

Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.;\...\xampp\php\PEAR') in C:\...\vendor\phpunit\phpunit\PHPUnit\Autoload.php on line 45 

我想這是PEAR缺少一個問題,但不應PEAR是PHPUnit中的依賴,並通過composer update安裝?

+0

正如一個註釋:通常你想要「require-dev」phpunit,因爲你不想在生產環境中安裝它(如果你通過作曲者),或者你是一個lib/module/bundle,你不需要想讓其他人安裝phpunit。 – edorian

回答

8

Composer創建對其安裝在所謂「bin-dir」內的軟件包的二進制文件(可執行腳本)的引用。默認情況下,它位於vendor/bin/,因此您可以像這樣運行它:php vendor/bin/phpunit。你通常也可以打電話vendor/bin/phpunit,它應該知道用php來執行它。

在Cygwin下,可能需要直接調用.bat文件,如vendor/bin/phpunit.bat

如果你寧願這更方便,你可以添加到您的composer.json:

"config": { 
     "bin-dir": "bin" 
    } 

那麼該文件將成爲剛剛bin/phpunit項目,有點短,少隱藏中訪問。

請注意,這些都不是真的cygwin特定的,它應該也適用於正常的Windows cmd和原生unix環境下。

+0

感謝您的好評!在Mac OS 10.8上,我可以像通過'vendor/bin/phpunit'那樣調用它,但是在使用Cygwin的Windows上,我收到錯誤'無法打開輸入文件:/.../vendor/phpunit/phpunit/composer/bin/phpunit',但通過'$ vendor/bin/phpunit.bat'調用PHPUnit工作得很好。任何想法爲什麼? – wowpatrick

+1

也許cygwin的路徑解析問題。我知道它適用於gitbash和msys/mingw shell,因爲這就是我使用的,但是cygwin往往會對路徑做更多的修改。 – Seldaek

+0

然後,也許只需要添加一個註釋來說明使用.bat文件是使用cygwin的方法。我將編輯問題的標題,因爲您的答案也適用於其他系統。 – wowpatrick