Структура папки

/app/lib/Helper.php

Helper.php

/vendor/autoload.php

composer.json

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

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

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

Команда, которую я выполняю на сервере [Debian 8 / PHP7]

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

    }
}

1) HelperTest :: test_array_get

phpunit - поставщик загрузки / autoload.php tests

Я получаю ошибку

lib \ Helper загружается через пространство имен, и моя IDE (PhpStorm) также распознает его. Пробираюсь уже несколько часов и все не получается.

Ошибка: класс lib \ Helper не найден

Что вы можете сделать, так это перенести установщик вашей версии .net. Visual Studio предоставляет такую возможность; в меню проекта {{X0}} выберите вкладку {{X1}}. Нажмите кнопку {{X2}}, выберите свою версию .net и выберите:

5
Ilario Engler 13 Май 2016 в 09:53

2 ответа

Лучший ответ

Ваша конфигурация автозагрузки говорит:

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

Так, например, класс в файле {{X0}} должен иметь пространство имен {{X1}}. Поэтому вам необходимо изменить объявление пространства имен для класса {{X2}} на:

классы в каталоге app имеют префикс пространства имен Datapark\LPS\.

Класс PHPUnit не найден

namespace Datapark\LPS\lib;

И для вашей тестовой папки есть аналогичная проблема.

7
Jakub Matczak 13 Май 2016 в 07:01

Я заметил, что при беге:

$ vendor/bin/phpunit tests

Что означает что-то вроде:

4
Riho 1 Ноя 2016 в 12:13