PHPUnit 自动加载器类与作曲家



我的项目结构是:

--/
--src
--tests
--phpunit.xml
--composer.json

我想使用作曲家在测试中从 src 文件夹自动加载我的类。我的作曲家.json:

{
"name": "codewars/pack",
"description": "Codewars project",
"type": "project",
"require": {
    "fxp/composer-asset-plugin": "^1.2.0",
    "phpunit/phpunit": "5.5.*",
    "phpunit/dbunit": "2.0.*"
},
"autoload": {
    "psr-4": {"Source\": "src/"
    }
}
}

生成的自动洛特文件:

<?php
// autoload_psr4.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
'Source\' => array($baseDir . '/src'),
);

我的phpunit.xml:

<phpunit bootstrap="vendor/autoload.php">
<testsuites>
    <testsuite name="Tests">
        <directory>tests</directory>
    </testsuite>
</testsuites>
</phpunit>

还有我的测试文件示例:

class Task2Test extends PHPUnit_Framework_TestCase
{
public function testTask2(){
    $list=[1,3,5,9,11];
    $this->assertEquals(7,SourcefindMissing($list));
    $list=[1,5,7];
    $this->assertEquals(3,SourcefindMissing($list));
 }
}

当我运行测试时,我收到错误,例如致命错误:调用未定义的函数源\查找丢失()

请帮帮我,我该如何解决这个问题?

PSR-4 设计用于自动加载类,而不是函数。因为 php 找不到包含您的函数的文件。

可能是使用类和静态方法编写代码的更好方法?比您可以使用PSR-4自动加载。另一种方法是将"文件"部分指定为autoload部分

{
    "name": "codewars/pack",
    "description": "Codewars project",
    "type": "project",
    "require": {
        "fxp/composer-asset-plugin": "^1.2.0",
        "phpunit/phpunit": "5.5.*",
        "phpunit/dbunit": "2.0.*"
},
"autoload": {
    "files": [
        "src/my_cool_function1.php",
        "src/my_cool_function2.php"
    ],
    "psr-4": {
        "Source\": "src/"
    }
}

有关更多信息,请参阅此问题

相关内容

  • 没有找到相关文章

最新更新