【问题标题】:PHPUnit Class not found未找到 PHPUnit 类
【发布时间】:2016-09-09 05:51:34
【问题描述】:

文件夹结构

/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 测试

我收到错误

1) HelperTest::test_array_get

错误:找不到类“lib\Helper”

lib\Helper 是通过命名空间加载的,我的 IDE (PhpStorm) 也可以识别它。 已经挣扎了几个小时,但没有让它工作。

【问题讨论】:

    标签: php unit-testing phpunit


    【解决方案1】:

    您的自动加载配置显示:

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

    意思是这样的:

    app 目录中的类具有 Datapark\LPS\ 命名空间前缀。

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

    namespace Datapark\LPS\lib;
    

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

    【讨论】:

      【解决方案2】:

      我在跑步时注意到:

      $ vendor/bin/phpunit tests
      

      然后我的测试开始起作用了

      【讨论】:

        猜你喜欢
        • 2016-11-28
        • 2013-07-18
        • 2016-10-17
        • 2013-04-11
        • 1970-01-01
        • 2015-11-25
        • 2018-04-29
        • 2019-07-22
        • 2017-06-29
        相关资源
        最近更新 更多