42

在使用Symfony 3.3 时,我在配置 PhpStorm IDE 以使用http://symfony.com/doc/current/components/phpunit_bridge.html时遇到问题。

我决定只下载phpunit.pharbin使用它。

Symfony 3.4(和Symfony 4),甚至没有phpunit.xml.dist开箱即用,所以使用方便存在问题phpunit.phar

我已经使用 flex 安装了 PHPUnit:

composer req phpunit

这创建了 phpunit.xml.dist 并且我能够通过以下方式从命令行运行测试:

php bin/phpunit

但是我又不能让 PhpStorm 使用它。

所以我下载phpunit.phar了它,它可以与提供的 phpunit.xml.dist 一起使用。

问题一: PhpStorm IDE 有没有办法使用 phpunit-bridge?

问题 2: Symfony 4(phpunit-bridge 或 vanilla phpunit.phar)的最佳实践是什么?

4

5 回答 5

71

我通常做的是将我在 PHPStorm 上的 phpunit 测试框架指向.phpunit由网桥创建的秘密目录,例如: 在此处输入图像描述

“phar”文件的位置是:

bin/.phpunit/phpunit-(major).(minor)/phpunit

或在某些情况下:

vendor/bin/.phpunit/phpunit-(major).(minor)/phpunit

phpunit在此之后,执行单元测试时将正确调用指定的可执行文件,但有一个--no-configuration选项。这会导致自动加载问题(很多“找不到类”错误),因为 Composer 生成的自动加载器没有在任何地方指定。

为了解决这个问题,你应该phpunit.xml在你的项目中有一个文件(无论如何这都是常见的做法),你可以在其中指定 Composer 的自动加载器,如下所示:

<phpunit bootstrap="vendor/autoload.php">

phpunit.xml应该在“默认配置文件”选项中指定,你应该很高兴。


关于使用 phpunit-bridge 的 phpstorm:它可以作为自定义脚本,但您不会有很好的界面和通过 PHPStorm 界面运行(和调试)特定测试的可能性。

于 2017-11-30T16:27:43.923 回答
29

我设法使用以下配置成功运行 symfony/phpunit-bridge:

  • PhpStorm 2018.2.5
  • Symfony 4.1.x
  • 在 docker 上运行的 PHP 7.1
  • “symfony/test-pack”:“^1.0”

脚步:

composer require --dev symfony/test-pack我拥有应该运行良好的 dir/vendor/bin文件之后。simple-phpunitsymfony/phpunit-bridge

然后在 PhpStorm 中File | Settings | Languages & Frameworks | PHP | Test Frameworks设置:

  • 收音机选择Path to phpunit.phar选项
  • Path to phpunit.pharsimple-phpunit文件的绝对路径(例如/application/vendor/bin/simple-phpunit
  • 检查Default configuration file:并将输入值设置为您的绝对本地化phpunit.xml.dist(在我的情况下/application/phpunit.xml.dist

phpstorm phpunit 设置

注意:phpunit.xml.dist文件应配置为使用symfony/phpunit-bridge- 检查https://symfony.com/doc/current/components/phpunit_bridge.html

单击应用/确定,现在您可以从 PhpStorm 界面运行测试

于 2018-11-05T16:45:29.157 回答
3

除了给出的答案,值得一提的是,秘密.phpunit目录不会凭空出现。

之后composer req phpunit,必须先运行phpunit脚本,例如:

bin/phpunit

它将下载 PHPUnit 的本地副本并将其放在同一文件夹中,因此 phar 可执行文件的路径将是:

// path may differ, at the time being is:
bin/.phpunit/phpunit-6.5-0/phpunit
于 2018-11-19T13:51:44.170 回答
0

接受的答案对我使用 PHPStorm 2020.1 和 Symfony 5.2 不起作用

我发现如果我为“phpunit.phar 的路径”应用一个空白值,它仍然有效,尽管首选项对话框抱怨“!phpunit.phar 的路径为空”。

所以在 Preferences > Languages & Frameworks > PHP > Test Frameworks 中:

在此处输入图像描述

于 2021-01-14T14:58:05.107 回答
-1

它非常简单且无所谓 Symfony 的版本,因为测试的概念仍然很稳定。首先,您需要在 PHPstorm 首选项(截图)上配置测试框架,在您的情况下,您可以使用 Vendored PHPUnit 或手动下载,您可以加入该PHPUnit library部分。然后你需要添加Run/Debug配置"phpunit/phpunit"正如我所"symfony/phpunit-bridge"看到的已安装,这就是全部。

于 2017-11-30T09:06:13.440 回答