未找到 PHPUnit Class

PHPUnit Class not found

文件夹结构

/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();

    }
}

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

phpunit --bootstrap vendor/autoload.php tests

错误我得到

1) HelperTest::test_array_get

Error: Class 'lib\Helper' not found

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

您的自动加载配置显示:

        "Datapark\LPS\": "app/"

这意味着:

classes in app directory have Datapark\LPS\ namespace prefix.

例如,文件 app/lib/Helper.php 中的 class 应该有命名空间 Datapark\LPS\lib。因此,您需要将 Helper class 的命名空间声明更改为:

namespace Datapark\LPS\lib;

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

我注意到当我 运行:

$ vendor/bin/phpunit tests

然后我的测试开始工作