使用PhpUnit时,编写器无法加载加载程序

使用PhpUnit时,编写器无法加载加载程序,php,phpunit,composer-php,Php,Phpunit,Composer Php,我正试图用PhpUnit和Composer。为此,我做了: 1将phpunit添加到req编写器部分: 2.根据需要安装: php composer.phar安装--dev 手术成功完成 安装phpunit/phpunit(3.7.6) 下载:100% 不幸的是,当我想运行测试时,我得到了 ./vendor/bin/phpunit PHP致命错误:调用成员函数 在/home/serek/php/project/tests/bootstrap.php中的非对象上添加() 在线12 出现问题的原因是

我正试图用PhpUnit和Composer。为此,我做了:

1将phpunit添加到req编写器部分:

2.根据需要安装:

php composer.phar安装--dev

手术成功完成

安装phpunit/phpunit(3.7.6) 下载:100%

不幸的是,当我想运行测试时,我得到了

./vendor/bin/phpunit PHP致命错误:调用成员函数 在/home/serek/php/project/tests/bootstrap.php中的非对象上添加() 在线12

出现问题的原因是 返回Composer AutoloaderInit::getLoader();在供应商/自动加载中,将NULL返回到测试引导中

你知道如何在没有黑客攻击的情况下解决这个问题吗

代码: phpunnit.xml.dist

> <?xml version="1.0" encoding="UTF-8"?>
> 
> <phpunit bootstrap="tests/bootstrap.php" colors="true">
>     <testsuites>
>         <testsuite name="PhpProject Test Suite">
>             <directory>tests/PhpProject/</directory>
>         </testsuite>
>     </testsuites>
> 
>     <filter>
>         <whitelist>
>             <directory suffix=".php">src/PhpProject/</directory>
>         </whitelist>
>     </filter> </phpunit>

问题是PHPUnit已经需要自动加载文件,因此您的require\u once调用没有执行,因此返回值没有设置(php没有保留require调用的返回值,因此require\u once在该用例中中断)


您可以安全地将其更改为
require
,因为在最新的composer版本中,自动加载器不再创建两次,多次需要自动加载器只会每次返回相同的实例。

您所说的是一个不共享的代码片段,将它添加到问题中可能会让其他人更容易理解。显然,您的测试引导会抛出错误,但您没有向我们展示代码。可能是您的假设是错误的。现在附上了一些文件内容不知道这是否是您的问题,但是
require\u once
和返回值没有多大意义,它可能应该是
require
。还要确保文件实际返回了一些内容。
> <?xml version="1.0" encoding="UTF-8"?>
> 
> <phpunit bootstrap="tests/bootstrap.php" colors="true">
>     <testsuites>
>         <testsuite name="PhpProject Test Suite">
>             <directory>tests/PhpProject/</directory>
>         </testsuite>
>     </testsuites>
> 
>     <filter>
>         <whitelist>
>             <directory suffix=".php">src/PhpProject/</directory>
>         </whitelist>
>     </filter> </phpunit>
> $loader = require_once __DIR__ . "/../vendor/autoload.php";
> $loader->add('PhpProject\\', __DIR__); //<- this is problematic line 12 (comments has 9 lines) 
// autoload.php generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInit::getLoader();