我安装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)
不幸的是,没有一个建议的修复程序对我有效.典型的响应是安装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)
而不必确定类与当前类文件的关系.
我还想说,无论我做了什么,我都无法按照我的喜好来上课自动加载.我希望这有帮助.