Symfony 4, PHPUnit Bridge и расположение phpunit - PullRequest
0 голосов
/ 13 сентября 2018

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

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

  • Вместо:
    1. Удалите его сейчас: 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.

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

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

1 Ответ

0 голосов
/ 22 ноября 2018

Мне удалось решить эту проблему, добавив 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>
...