【发布时间】:2012-09-29 05:34:41
【问题描述】:
我正在尝试将 PhpUnit 与 Composer 一起使用。为此我做了:
1 将 phpunit 添加到 req composer 部分:
"require": { "php": ">=5.3.0" }, "require-dev": { "phpunit/phpunit": "3.7.*" }, "autoload": { "psr-0": {"PhpProject": "src/"} }
2 安装了需要的东西:
php composer.phar 安装 --dev
操作成功完成。
安装 phpunit/phpunit (3.7.6) 下载:100%
不幸的是,当我想运行测试时,我得到了
./vendor/bin/phpunit PHP 致命错误:调用成员函数 在 /home/serek/php/project/tests/bootstrap.php 中的非对象上添加() 在第 12 行
出现问题是因为 返回 ComposerAutoloaderInit::getLoader();在 vendor/autoload 中将 NULL 返回到测试引导程序中。
知道如何在不破解 Loader 的情况下解决它吗?
代码: 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>
tests/bootstrap.php(这里我只需要自动加载器)
> $loader = require_once __DIR__ . "/../vendor/autoload.php";
> $loader->add('PhpProject\\', __DIR__); //<- this is problematic line 12 (comments has 9 lines)
/../vendor/autoload.php
// autoload.php generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInit::getLoader();
【问题讨论】:
-
您正在谈论您不共享的代码片段,将其添加到问题中可能会让其他人更容易理解。
-
显然您的测试引导程序会引发错误,但您没有向我们展示代码。可能是你的假设是错误的。
-
部分文件内容已附加
-
不知道这是否是您的问题,但
require_once和返回值没有多大意义,它可能应该是require。还要确保文件实际上正在返回一些东西。
标签: php phpunit composer-php