更新

我已经解决了这个问题,这完全是关于 app/cacheapp/logs 中的正确权限。


当我尝试在 symfony2 中运行 PHPUnit 时,使用此命令 phpunit -c app/ 我收到这个巨大的错误消息:

PHPUnit 3.7.28 by Sebastian Bergmann. 
 
Configuration read from /var/www/task/app/phpunit.xml.dist 
 
PHP Warning:  Uncaught exception 'PHPUnit_Framework_Error_Warning' with message 'require_once(/var/www/task/vendor/symfony/symfony/vendor/autoload.php): failed to open stream: No such file or directory' in /var/www/task/vendor/symfony/symfony/autoload.php.dist:9 Stack trace: 
#0 /var/www/task/vendor/symfony/symfony/autoload.php.dist(9): PHPUnit_Util_ErrorHandler::handleError(2, 'require_once(/v...', '/var/www/task/v...', 9, Array) 
#1 /var/www/task/vendor/symfony/symfony/autoload.php.dist(9): require_once() 
#2 /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/AppKernel.php(26): require_once('/var/www/task/v...') 
#3 /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/WebTestCase.php(47): require_once('/var/www/task/v...') 
#4 /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/WebTestCase.php(54): Symfony\Bundle\FrameworkBundle\Tests\Functional\WebTestCase::getKernelClass() 
#5 /var/www/task/vendor/symfony/symfon in /var/www/task/vendor/symfony/symfony/autoload.php.dist on line 9  
 
PHP Stack trace: 
PHP   1. {main}() /home/rafael/composer-packages/vendor/phpunit/phpunit/composer/bin/phpunit:0 
PHP   2. PHPUnit_TextUI_Command::main() /home/rafael/composer-packages/vendor/phpunit/phpunit/composer/bin/phpunit:63 
PHP   3. PHPUnit_TextUI_Command->run() /home/rafael/composer-packages/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:129 
PHP   4. PHPUnit_TextUI_TestRunner->doRun() /home/rafael/composer-packages/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:176 
PHP   5. PHPUnit_Framework_TestSuite->run() /var/www/task/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:349 
PHP   6. PHPUnit_Framework_TestSuite->run() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:705 
PHP   7. PHPUnit_Framework_TestSuite->runTest() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:745 
PHP   8. PHPUnit_Framework_TestCase->run() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:775 
PHP   9. PHPUnit_Framework_TestResult->run() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:783 
PHP  10. PHPUnit_Framework_TestCase->runBare() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php:648 
PHP  11. Tsk\UserBundle\Tests\Unit\Entity\ModelTestCase->setUp() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:835 
PHP  12. Symfony\Bundle\FrameworkBundle\Test\WebTestCase::createClient() /var/www/task/src/Tsk/UserBundle/Tests/Unit/Entity/ModelTestCase.php:13 
PHP  13. Symfony\Bundle\FrameworkBundle\Tests\Functional\WebTestCase::createKernel() /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php:46 
PHP  14. Symfony\Bundle\FrameworkBundle\Tests\Functional\WebTestCase::getKernelClass() /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/WebTestCase.php:54 
PHP  15. require_once() /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/WebTestCase.php:47 
PHP  16. require_once() /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/AppKernel.php:26 PHP Fatal error:  main(): Failed opening required '/var/www/task/vendor/symfony/symfony/vendor/autoload.php' (include_path='/var/www/task/vendor/phpunit/php-text-template:/var/www/task/vendor/phpunit/phpunit-mock-objects:/var/www/task/vendor/phpunit/php-timer:/var/www/task/vendor/phpunit/php-token-stream:/var/www/task/vendor/phpunit/php-file-iterator:/var/www/task/vendor/phpunit/php-code-coverage:/var/www/task/vendor/phpunit/phpunit:/var/www/task/vendor/symfony/yaml:/home/rafael/composer-packages/vendor/phpunit/php-text-template:/home/rafael/composer-packages/vendor/phpunit/phpunit-mock-objects:/home/rafael/composer-packages/vendor/phpunit/php-timer:/home/rafael/composer-packages/vendor/phpunit/php-file-iterator:/home/rafael/composer-packages/vendor/phpunit/php-code-coverage:/home/rafael/composer-packages/vendor/phpunit/php-token-stream:/home/rafael/composer-packages/vendor/phpunit/phpunit:/home/rafael/composer-packages/vendor/symfony/yaml:.:/usr/share/php:/usr/share/pear') in /var/www/task/vendor/symfony/symfony/autoload.php.dist on line 9  
 
PHP Stack trace: 
PHP   1. {main}() /home/rafael/composer-packages/vendor/phpunit/phpunit/composer/bin/phpunit:0 
PHP   2. PHPUnit_TextUI_Command::main() /home/rafael/composer-packages/vendor/phpunit/phpunit/composer/bin/phpunit:63 
PHP   3. PHPUnit_TextUI_Command->run() /home/rafael/composer-packages/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:129 
PHP   4. PHPUnit_TextUI_TestRunner->doRun() /home/rafael/composer-packages/vendor/phpunit/phpunit/PHPUnit/TextUI/Command.php:176 
PHP   5. PHPUnit_Framework_TestSuite->run() /var/www/task/vendor/phpunit/phpunit/PHPUnit/TextUI/TestRunner.php:349 
PHP   6. PHPUnit_Framework_TestSuite->run() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:705 
PHP   7. PHPUnit_Framework_TestSuite->runTest() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:745 
PHP   8. PHPUnit_Framework_TestCase->run() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestSuite.php:775 
PHP   9. PHPUnit_Framework_TestResult->run() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:783 
PHP  10. PHPUnit_Framework_TestCase->runBare() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestResult.php:648 
PHP  11. Tsk\UserBundle\Tests\Unit\Entity\ModelTestCase->setUp() /var/www/task/vendor/phpunit/phpunit/PHPUnit/Framework/TestCase.php:835 
PHP  12. Symfony\Bundle\FrameworkBundle\Test\WebTestCase::createClient() /var/www/task/src/Tsk/UserBundle/Tests/Unit/Entity/ModelTestCase.php:13 
PHP  13. Symfony\Bundle\FrameworkBundle\Tests\Functional\WebTestCase::createKernel() /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Test/WebTestCase.php:46 
PHP  14. Symfony\Bundle\FrameworkBundle\Tests\Functional\WebTestCase::getKernelClass() /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/WebTestCase.php:54 
PHP  15. require_once() /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/WebTestCase.php:47 
PHP  16. require_once() /var/www/task/vendor/symfony/symfony/src/Symfony/Bundle/FrameworkBundle/Tests/Functional/app/AppKernel.php:26 

我的 phpunit.xml.dist 文件:

<?xml version="1.0" encoding="UTF-8"?> 
 
<!-- http://www.phpunit.de/manual/current/en/appendixes.configuration.html --> 
<phpunit 
    backupGlobals               = "false" 
    backupStaticAttributes      = "false" 
    colors                      = "true" 
    convertErrorsToExceptions   = "true" 
    convertNoticesToExceptions  = "true" 
    convertWarningsToExceptions = "true" 
    processIsolation            = "false" 
    stopOnFailure               = "false" 
    syntaxCheck                 = "false" 
    bootstrap                    = "bootstrap.php.cache" > 
 
    <testsuites> 
        <testsuite name="Project Test Suite"> 
            <directory>../src/*/*Bundle/Tests</directory> 
            <directory>../src/*/Bundle/*Bundle/Tests</directory> 
        </testsuite> 
    </testsuites> 
 
    <!-- 
    <php> 
        <server name="KERNEL_DIR" value="/path/to/your/app/" /> 
    </php> 
    --> 
 
    <filter> 
        <whitelist> 
            <directory>../src</directory> 
            <exclude> 
                <directory>../src/*/*Bundle/Resources</directory> 
                <directory>../src/*/*Bundle/Tests</directory> 
                <directory>../src/*/Bundle/*Bundle/Resources</directory> 
                <directory>../src/*/Bundle/*Bundle/Tests</directory> 
            </exclude> 
        </whitelist> 
    </filter> 
 
</phpunit> 

我的app/autoload.php:

<?php 
 
use Doctrine\Common\Annotations\AnnotationRegistry; 
use Composer\Autoload\ClassLoader; 
 
/** 
 * @var ClassLoader $loader 
 */ 
$loader = require __DIR__.'/../vendor/autoload.php'; 
 
AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 
 
return $loader; 

我的 vendor/symfony/symfony/autoload.php.dist :

<?php 
 
if (version_compare(PHP_VERSION, '5.4', '>=') && gc_enabled()) { 
    // Disabling Zend Garbage Collection to prevent segfaults with PHP5.4+ 
    // https://bugs.php.net/bug.php?id=53976 
    gc_disable(); 
} 
 
$loader = require_once __DIR__.'/vendor/autoload.php'; 
 
use Doctrine\Common\Annotations\AnnotationRegistry; 
 
AnnotationRegistry::registerLoader(array($loader, 'loadClass')); 
 
return $loader; 

非常感谢任何帮助,我在这个错误中停留了大约 4 个小时。

请您参考如下方法:

如果您在使用 IDE 自动导入 use 语句时不够小心,也会出现此错误消息。也就是说,导入

use Symfony\Bundle\FrameworkBundle\Tests\Functional\WebTestCase; 

误而不是

use Symfony\Bundle\FrameworkBundle\Test\WebTestCase; 

导致同样的错误。


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!