PHPUnit:无法打开所需的`PHPUnit_Extensions_Story_TestCase.php`

时间:2013-12-25 06:29:26

标签: php phpunit

我安装了PHPUnit

wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit

尝试运行一个简单的测试,但得到:

Fatal error: require_once(): Failed opening required 'PHPUnit_Extensions_Story_TestCase.php'

如何安装PHPUnit_Extensions_Story_TestCase

测试很简单:

class TestFunctions extends PHPUnit_Framework_TestCase {
    public function test_str() {
        $this->assertEquals('foo', 'bar');
    }
}

4 个答案:

答案 0 :(得分:5)

不幸的是,没有一个建议的修复程序对我有用。典型的响应是安装phpunit / PHPUnit_Story模块。虽然这会让你朝着正确的方向前进,但它并没有解决我的问题。

我在boostrap.php文件中注册了自动加载功能。这很可能取代了由PHPUnit注册的自动加载功能,用于自动加载PHPUnit的类。我评论了我的自动加载功能实现,问题就消失了。

修改

回应@ user3265472;我已经有一段时间了,但是我想说“修复”是在bootstrap.php文件的开头设置包含路径,然后像往常一样手动加载类:

/**
 * Configure include paths used by the unit tests.
 *
 * @return void
 */
function configure_include_paths()
{
    set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . "/mylib");
    set_include_path(get_include_path() . PATH_SEPARATOR . dirname(__FILE__) . "/mylib2");
    set_include_path(get_include_path() . PATH_SEPARATOR . dirname(dirname(__FILE__)) . "/lib");
}

configure_include_paths();

这使我可以在每个文件的开头执行以下操作:

require_once("MyClass.php");

而不是必须确定类相对于当前类文件的位置。

我还想说,无论我做了什么,我都无法按照我的喜好来上课自动加载。我希望这会有所帮助。

答案 1 :(得分:1)

您需要安装phpunit / PHPUnit_Story包:

sudo pear channel-discover pear.phpunit.de
sudo pear install phpunit/PHPUnit_Story

或从github repository手动。

答案 2 :(得分:1)

就像Bakyt Abdrasulov所说,这似乎是一个自动加载器问题。

见他的评论: “我在自动加载功能中使用@include_once而不是require_once来修复它。”

答案 3 :(得分:1)

如果您使用composer安装phpunit,则不会出现这些错误

第1步: 在项目根目录中创建composer.json文件:

{
    "require-dev": {
        "phpunit/phpunit": "4.6.*",
        "phpunit/phpunit-selenium": ">=1.4",
        "phpunit/dbunit": ">=1.3",
        "phpunit/phpunit-story": "*",
        "phpunit/php-invoker": "*"
    },
    "autoload": {
        "psr-0": {"": "src"}
    },
    "config": {
        "bin-dir": "bin/"
    }
}

第2步: 使用以下命令将composer安装到项目中:

curl -sS https://getcomposer.org/installer | php

确保composer可执行:

chmod +x composer.phar

让composer安装依赖项:

./composer.phar install --dev

检查您是否安装了项目特定的phpunit版本:

bin/phpunit --version

以上指定的是一个软链接

ls -la bin/phpunit
bin/phpunit -> ../vendor/phpunit/phpunit/phpunit

后记你可以制作' phpunit'的软链接。从供应商目录进入正在使用的php目录。 这将删除与

相关的所有警告
PHP Warning:  include(classes/PHPUnit_Extensions_Story_TestCase.php)
PHP Warning:  include(): Failed opening 'classes/PHPUnit_Extensions_Story_TestCase.php' 
PHP Warning:  include(classes/Composer\Autoload\ClassLoader.php)