找不到PHPUnit类

时间:2016-05-13 06:53:10

标签: php unit-testing phpunit

文件夹结构

/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 个答案:

答案 0 :(得分:5)

您的自动加载配置显示:

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

这意味着:

  <{1}}目录中的

类具有app名称空间前缀。

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

Helper

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

答案 1 :(得分:4)

我注意到我跑的时候:

$ vendor/bin/phpunit tests
然后我的测试开始起作用了