在PhpStorm中运行PHPUnit测试增加了--“团队城市”;导致错误的选项

在PhpStorm中运行PHPUnit测试增加了--“团队城市”;导致错误的选项,phpunit,teamcity,phpstorm,Phpunit,Teamcity,Phpstorm,我有最新的PhpStorm(2016.2)和PHPUnit phar(5.5.4)。出于某种原因,当我在PhpStorm中的项目中运行PHPUnit测试时,它将--teamcity添加到run命令中,导致失败: Testing started at 12:52 PM ... Unit test suite invoked with a path to a non-unit test: --teamcity Process finished with exit code 1 我不知道这个--te

我有最新的PhpStorm(2016.2)和PHPUnit phar(5.5.4)。出于某种原因,当我在PhpStorm中的项目中运行PHPUnit测试时,它将
--teamcity
添加到run命令中,导致失败:

Testing started at 12:52 PM ...
Unit test suite invoked with a path to a non-unit test: --teamcity
Process finished with exit code 1
我不知道这个
--teamcity
选项是从哪里来的,无论我运行什么测试,甚至从空白配置开始,它都会发生。我也没有安装TeamCity插件,我甚至没有使用TeamCity

以下是完整命令显示的内容:

/usr/local/Cellar/php70/7.0.9/bin/php /Users/name/bin/phpunit-5.5.4.phar --configuration /path/to/config/my-phpunit.xml ClassNameTest /Users/name/PhpstormProjects/path/to/tests/unit/app/ClassNameTest.php --teamcity
(已调出敏感信息)


我想做的就是去掉这个
--teamcity
选项,如果我在一个单独的终端窗口中运行而没有这个选项,一切都会正常工作。这只是最近才开始发生的,可能是在PhpStorm更新之后。

问题是项目内部的。PHPUnit不包含该错误消息。对不起

我花了半天的时间来解决这个问题。基本问题是在PHPUnit版本之间切换(
6.x.x
->
4.x.x
)。(通过切换分支发生在我身上)

单击PHPUnit首选项中的刷新按钮可以修复它

Languages&Frameworks>PHP>PHPUnit

确保它认为您拥有的PHPUnit版本与它报告的版本匹配

tl;dr

我只能通过从我的系统(Linux)中删除系统安装的phpunit实例来解决此问题:

详细信息

即使PhpStorm中的设置是使用composer autoloader:

出于某种原因,它最终使用了
/usr/share/php/PHPUnit/Util/Log/TeamCity.php

Project的本地PHPUnit为6.2,而系统默认值为5.1->它们不兼容。

--teamcity
选项由PHPStorm用于输出测试结果

您所面临的问题是由PHP7和PHPUnit的旧版本引起的

删除PHPUnit 5并使用composer安装最新版本(目前为6.2),然后改用PHPUnit名称空间


关于这个错误的更多信息:

我相信
--teamcity
这里有一个结果打印机的名称(或任何适当的名称),以便IDE可以实时监控和跟踪测试执行(使用结果和当前进度更新GUI)。这种打印机只是以IDE可以理解的格式打印测试执行信息,就是这样。此参数不会影响我的PHPUnit测试执行(PhpStorm 2016.2.1;PHPUnit 5.5.4&5.0.8;PHP5.6.25&7.0.10;Windows 7)这是完整的命令:
E:\Projects\php70\php.exe E:\Projects\web\\ libs\lib3\vendor\phpunit-5.5.4.phar--configuration E:\Projects\web\\ libs\lib3\tests\phpunit-ide.xml Core\tests\Helpers\inputest E:\Projects\web\\ libs\lib3\tests\Core\Helpers\inputests.php--teamcity
@LazyOne。即使在切换到控制台时,也会出现相同的错误。在
fish
bash
shell中都尝试过。当我将
--teamcity
选项移动到
--configuration
之前时,它以teamcity格式工作并输出。什么会导致脚本将
--teamcity
识别为单元测试而不是选项参数?出于好奇:1)在全新的项目中尝试使用基本(但实际)测试用例2)尝试备份并删除IDE范围的配置(从新开始)——这是为了检查它是否与IDE设置有关。但到目前为止,它看起来不像IDE相关的问题(至少到目前为止这是我的印象)。如果您通过内置更新进行PhpStorm更新,请尝试下载完整的安装包。好吧,这是某种依赖性问题或bug。我检查了paratest开源项目和
--teamcity
选项,但是一切都正常。在我的另一个项目中,关于命令运行者或读取器的某些东西不能解释“代码> --TeaveCase<代码>选项。如果您的项目不是超级私有的,请考虑在JETEngy的问题跟踪器上提供一些可重复的示例项目(附件可以仅对JB成员可见)。--也许他们可以提出一些解决办法。。或者他们将来可能会提供一些选项,将这样的
--teamcity
参数放在前面(在其他参数之前)@LazyOne,但不确定它有多有用。实际上,我们有一个自定义脚本,它检查了命令的最后一个参数,并假设它是一个文件路径,根本没有验证。在这种情况下,不需要票据。我在这里提交了票据:我在PHPUnit
5.x
->
4.x
中遇到了这个问题。PHPStorm中的位置已更改为
Languages&Frameworks>PHP>testframeworks
先生,您节省了我半天的时间来研究古老的代码。请接受我的投票。我使用Laravel,我不得不删除操作系统安装的Phpunit,谢谢。这解决了我的问题。作为补充,您还可以在删除系统安装的composer后使用composer全局安装最新的phpunit
composer g require phpunit/phpunit
通常的做法是使用最新版本的东西,但有时(例如,在我的工作中)我们不得不使用较旧版本的PHP/phpunit,因为这些版本上已经有软件运行,升级这些版本实际上会破坏它们。您不能总是选择最新版本:/
sudo apt remove phpunit-*