首页 > 解决方案 > Symfony 4、PHPUnit Bridge 和 phpunit 位置

问题描述

如果您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.

请注意,版本不一样。为什么?
为什么不使用作曲家及其自动加载器?现在我们在使用它和 PHPStorm 等其他工具时遇到了麻烦(损坏的 phpunit 调试等)。
我知道,我可以将 phpunit 路径添加到主作曲家自动加载,但这种方法似乎很脏。

如何在 Symfony 4 中以正确的方式使用 phpunit,以及所有调试集成等?

标签: symfonyphpunitsymfony4

解决方案


我设法通过在 Symfony 的根目录中添加 phpunit.xml.dist 来解决这个问题。

该文件以前存在,但我怀疑当我删除 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>

推荐阅读