我安装了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');
}
}
答案 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)