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

Jus*_*tin 4 php phpunit

我安装PHPUnit了:

wget https://phar.phpunit.de/phpunit.phar
chmod +x phpunit.phar
mv phpunit.phar /usr/local/bin/phpunit
Run Code Online (Sandbox Code Playgroud)

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

Fatal error: require_once(): Failed opening required 'PHPUnit_Extensions_Story_TestCase.php'
Run Code Online (Sandbox Code Playgroud)

我该如何安装PHPUnit_Extensions_Story_TestCase

测试很简单:

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

Peq*_*qNP 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();
Run Code Online (Sandbox Code Playgroud)

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

require_once("MyClass.php");
Run Code Online (Sandbox Code Playgroud)

而不必确定类与当前类文件的关系.

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

  • 你好.我有同样的问题.我在自动加载功能中使用`@include_once`而不是`require_once`来修复它. (2认同)