尝试集成PHPUnit和我的IDE(PhpStorm 2017.2)。我直接执行phpunit.phar
文件(版本5.7.21),因为我没有使用Composer,也没有安装它。
phpunit.xml
<phpunit bootstrap="phpunit-bootstrap.php">
<testsuites>
<testsuite name="Test suite">
<directory>./</directory>
</testsuite>
</testsuites>
</phpunit>
PHPUnit的-bootstrap.php中
spl_autoload_register('my_autoload');
/**
* @param string $className Fully qualified name to autoload
*/
function my_autoload($className){
require $_SERVER['DOCUMENT_ROOT'] . "\\$className.php";
}
当我执行项目文件时,此自动加载器正常工作。但是当我尝试运行任何PHPUnit测试时,我看到了这个错误:
致命错误:require():无法打开所需的&#39; \ Composer \ Autoload \ ClassLoader.php&#39;
如果删除自动加载,则无法再找到我的项目类(相同的错误,不同的类名)。
PHPUnit是否依赖于全局安装并在系统路径上可用的Composer?
根据kuba的评论建议,我将自动加载更改为:
require __DIR__ . "\\$className.php";
新错误:
致命错误:require():无法打开所需&#39; C:\ project-root \ Composer \ Autoload \ ClassLoader.php&#39;
答案 0 :(得分:1)
我需要调整自动加载器,以便在PHP尝试加载Composer\Autoload\ClassLoader.php
时不执行任何操作。所以我改变了自动加载器:
function my_autoload($className){
require __DIR__ . "\\$className.php";
}
到
function my_autoload($className){
$path = __DIR__ . "\\$className.php";
if (file_exists($path)) require $path;
}