PHPUnit 必须要求 Composer\Autoload\ClassLoader.php吗?



尝试集成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((:打开失败需要"\Composer\Autoload\ClassLoader.php">

如果我删除自动加载,那么我的项目类就再也找不到了(相同的错误,不同的类名(。

PHPUnit 是否依赖于全局安装并在系统路径上可用的 Composer?

更新 1

按照 kuba 在评论中的建议,我将自动加载更改为:

require __DIR__ . "\$className.php";

新错误:

致命错误:require((:需要打开失败"C:\project-root\Composer\Autoload\ClassLoader.php

我需要调整我的自动加载器,以便在 PHP 尝试加载ComposerAutoloadClassLoader.php时不执行任何操作。所以我把我的自动加载机从:

function my_autoload($className){
require __DIR__ . "\$className.php";
}

function my_autoload($className){
$path = __DIR__ . "\$className.php";
if (file_exists($path)) require $path;
}

相关内容

  • 没有找到相关文章

最新更新