PHPUnit 文件中包含的类不能使用自动加载机?



我写了一个router.test.php文件:

class RouterTest extends PHPUnit_Framework_TestCase
{
    public function setUp()
    {
        require_once '../router.class.php';
    }

    public function testUnit()
    {
        $this->assertEquals(true, true);
    }
}

。只需测试我的 PHPUnit 库是否正常工作。但是当我在控制台中键入phpunit router.test.php时,我收到以下错误消息:Fatal error: Trait 'Core' not found in C:xampphtdocs_Frameworkver_3librariesrouterrouter.class.php on line 23

。我的路由器类工作正常,我的自动加载器自动在我的路由器类中包含特征(名为核心)。

问题出在哪里?

我的自动加载器注册方法如下所示:

public static function register()
{
    return spl_autoload_register(
        __CLASS__ . '::load'
    );
}

。我在索引.php文件中使用此方法,我应该为 PHPUnits 编写另一个自动加载器吗?


我在 setUp 方法中包含必要的文件,现在类看起来像这样:

<?php
use FrameworkLibrariesConfigurationConfiguration;
use FrameworkLibrariesAutoloadAutoloader;

class RouterTest extends PHPUnit_Framework_TestCase
{
    public function setUp()
    {
        require '../../core.trait.php';
        require '../../configuration/configuration.class.php';
        require '../../autoload/autoloader.class.php';
        Configuration::set('files', [
            require '../../../configuration/framework.configuration.php',
            require '../../../configuration/autoloader.configuration.php',
            require '../../../configuration/router.configuration.php',
        ]);
        Autoloader::set('prefixes', ['Framework']);
        Autoloader::set('extensions', ['.class.php', '.trait.php']);
        Autoloader::register();
        require_once '../router.class.php';
    }
    public function testUnit()
    {
        $this->assertEquals(true, true);
    }
}

。我收到一条新的错误消息:E Time: 109 ms, Memory: 1.75Mb There was 1 error,但我无法收到错误消息。我认为这是因为自动加载器由于路径错误而无法加载文件。

不,它不会自动加载索引文件。因此,您需要通过添加include_once('AutoLoader.php');将所有相关类包含在单元测试类中,或者另一种方法是创建一个bootstrap.php文件并在所有PHPUnit Test类中包含所需的所有类。

参考资料

最新更新