繁体   English   中英

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

[英]Must PHPUnit require 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尝试加载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;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM