PHPUnit类未找到。

5

文件夹结构

/app/lib/Helper.php

/tests/HelperTest.php

/vendor/autoload.php

composer.json

{
    "require-dev": {
        "phpunit/phpunit": "*"
    },

    "autoload": {
        "psr-4": {
            "Datapark\\LPS\\": "app/"
        }
     },

     "autoload-dev": {
         "psr-4": {
             "Datapark\\LPS\\Tests\\": "tests/"
          }
     },
}

Helper.php

<?php

namespace lib;

class Helper
{   
    public function array_get($array, $key, $default = null)
    {
        // code
    } 
}

HelperTest.php

<?php

use lib\Helper;

class HelperTest extends \PHPUnit_Framework_TestCase
{
    public function test_array_get()
    {
        $helper = new Helper();

    }
}

我在服务器上运行的命令 [Debian 8 / PHP7]

phpunit --bootstrap vendor/autoload.php tests

我得到的错误

1) HelperTest::test_array_get

错误:找不到类'lib\Helper'

lib\Helper是通过命名空间加载的,我的IDE(PhpStorm)也能识别它。 我已经苦苦挣扎了几个小时,但还是无法让它正常工作。

2个回答

7

您的自动加载配置如下:

        "Datapark\\LPS\\": "app/"

这意味着类位于app目录中,具有Datapark\LPS\命名空间前缀。例如,app/lib/Helper.php文件中的类应具有命名空间Datapark\LPS\lib。因此,您需要将Helper类的命名空间声明更改为:
namespace Datapark\LPS\lib;

你的测试文件夹也存在类似的问题。


5
我注意到当我运行以下命令时:

$ vendor/bin/phpunit tests

然后我的测试开始工作了


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接