symfony - Symfony 4、PHPUnit Bridge 和 phpunit 位置
问题描述
如果您phpunit/phpunit
在 Symfony 4应用程序中安装软件包,您会收到以下消息:
不鼓励将 phpunit/phpunit 添加为依赖项,以支持 Symfony 的 PHPUnit Bridge。
- 反而:
- 现在删除它:
composer remove --dev phpunit/phpunit
- 使用 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 路径添加到主作曲家自动加载,但这种方法似乎很脏。
如何在 Symfony 4 中以正确的方式使用 phpunit,以及所有调试集成等?
解决方案
我设法通过在 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>
推荐阅读
- java - 使用 Spring Boot 作为通用 JAR 和 Gradle 的传递依赖项
- java - 如何从浏览器调用 servlet doPost() 方法
- ruby-on-rails - 如何在 AWS Fargate 上使用 webpack 配置 Rails 5
- javascript - 笑话覆盖没有检测到 node.js 中的某些文件
- gremlin - 如何从本地 gremlin-console 将 graphml 文件加载到 Janusgraph 的远程实例中
- python - 我将如何通过 Python 中的这个断言测试来尝试查找字典中列出的所有视图数量的总和?
- android - 在 Android 中放置坐标
- php - 如何在 Symfony 的 ChoiceType 表单中的 select 标签内添加“selected & disabled”选项标签?
- react-native - 如何从抽屉导航器传递函数
- xamarin.android - Appcenter 无法确定“v11.0”的 $(TargetFrameworkVersion) 的 API 级别