Symfony 4, мост PHPUnit и местоположение phpunit

Если вы устанавливаете пакет phpunit/phpunit в приложении Symfony 4, вы получаете сообщение:

Добавление phpunit/phpunit в качестве зависимости не рекомендуется в пользу Symfony PHPUnit Bridge.

  • Instead:
    1. Remove it now: composer remove --dev phpunit/phpunit
    2. Используйте мост Symfony: composer require --dev phpunit

Итак, я установил symfony/phpunit-bridge пакет.
Он создал bin/phpunit файл и vendor/bin/simple-phpunit.

  • Если я запускаю bin/phpunit, он загружает проект phpunit и устанавливает его зависимости в bin/.phpunit/phpunit-6.5.
  • Если я запускаю vendor/bin/simple-phpunit, он загружает проект phpunit и устанавливает его зависимости в vendor/bin/.phpunit/phpunit-5.7.

Обратите внимание, что версии не совпадают. Почему?
А почему бы не использовать композитор и его автозагрузчик? Теперь у нас есть проблемы с ним и другими инструментами, такими как PHPStorm (сломанная отладка phpunit и т. д.).
Я знаю, что могу добавить путь phpunit в автозагрузку основного композитора, но этот метод кажется очень грязным.

Как правильно использовать phpunit в Symfony 4, со всеми интеграциями отладки и т. д.?


person Dmitry    schedule 13.09.2018    source источник
comment
скорее всего, они используют 5.7, а не 6.5 из-за некоторых разрывов BC между 2. Почему вы не можете указать Storm на исполняемый файл simple-phpunit?   -  person DevDonkey    schedule 13.09.2018
comment
@DevDonkey, как это можно сделать? Я не могу указать исполняемый файл в настройках PHP:Test Framework, только автозагрузчик композитора, phpunit.phar или глобальное местоположение PEAR.   -  person Dmitry    schedule 13.09.2018
comment
укажите на него phpunit.phar. Это должно быть счастливо с этим.   -  person DevDonkey    schedule 13.09.2018
comment
Это похоже на грязный обходной путь.   -  person Dmitry    schedule 13.09.2018


Ответы (1)


Мне удалось решить эту проблему, добавив phpunit.xml.dist в корень Symfony.

Файл существовал ранее, но я подозреваю, что когда я удалял phpunit, он также удалял этот файл.. (Я могу ошибаться, но я уверен)

Когда я возвращаю стандартный файл phpunit.xml.dist в корень, он предлагает мне добавить в него переменную KERNEL_CLASS.

Когда я добавил его, он начал работать нормально.

Полное содержимое моего phpunit.xml.dist на случай, если это кому-то понадобится

<?xml version="1.0" encoding="UTF-8"?>
<!-- 
https://phpunit.de/manual/current/en/appendixes.configuration.html -->
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:noNamespaceSchemaLocation="http://schema.phpunit.de/6.5/phpunit.xsd"
     backupGlobals="false"
     colors="true"
     bootstrap="vendor/autoload.php"
>
<php>
    <ini name="error_reporting" value="-1" />
    <server name="KERNEL_CLASS" value="App\Kernel" />
</php>

<testsuites>
    <testsuite name="Project Test Suite">
        <directory>tests</directory>
    </testsuite>
</testsuites>

<filter>
    <whitelist>
        <directory>src</directory>
    </whitelist>
</filter>

<listeners>
    <listener class="Symfony\Bridge\PhpUnit\SymfonyTestsListener" />
</listeners>
</phpunit>
person hsb1007    schedule 22.11.2018
comment
Прежде всего, я просто хочу сказать, что проблема устранена; теперь вам не нужно беспокоиться об удалении. Но, как правило, не публикуйте комментарии (или новые вопросы) в качестве ответов (как вы делали в редакции 1). Это не настоящие ответы, и они могут быть удалены. Как я уже сказал, это ответ сейчас, так что вам не о чем беспокоиться. Просто говорю это, чтобы вы могли избежать этого в будущем. У вас также более 50 репутации, поэтому у вас достаточно репутации, чтобы оставлять комментарии. - person Zoe; 22.11.2018
comment
Да, я создал файл дистрибутива phpunit. Но проблема в том, что мне нужно настроить другие инструменты: PHPStorm, phpstan и т. д. Они работают с автозагрузкой композитора, а не с пользовательской автозагрузкой. - person Dmitry; 23.11.2018